一个没有发现“)”错误,找了半天,是不是版本问题?


   
  /**
  
* 根据字段的键值对数组,形成插入语句,并执行
*
* @param $data array
*/
public function autoInsert($data) {
//过滤下数组
$data = $this->filter($data);
//拼凑insert语句
//拼凑表名
$sql = "insert into `{$this->table()}`";

//拼凑字段列表部分
//得到所有的下标,得到所有的键!
$fields = array_keys($data);//array('goods_id', 'goods_name', '...');
//最好给所有的字段名,增加上反引号包裹!
// 此处是97行
$fields = array_map(function($v){return "`$v`";}, $fields);
$fields_str = implode(',', $fields);//goods_id, goods_name, goods_sn,....
$sql .= '(' . $fields_str . ')';

//
$sql .= ' values ';

//拼凑值列表部分
//需要将所有的值,增加上引号包裹,再使用逗号连接起来!
$values = array_map(function($v){return "'$v'";}, $data);//对数组内的每个元素,都执行相应的函数, array("'iphone'", "'goods_12'", ....);
//使用逗号连接
$values_str = implode(',', $values);
$sql .= '(' . $values_str . ')';
echo $sql;
//执行
return $this->db->query($sql);

}

/**
* 过滤合理的数据
*
* @param $data array 接收的数组
* @return array 过滤好的数组
*/
public function filter($data) {
foreach($data as $key=>$value) {
//$key只要出现在$this->fields内
if(!in_array($key, $this->fields)) {
unset($data[$key]);
}
}
return $data;
}

显示Parse error: syntax error, unexpected T_FUNCTION, expecting ')' in D:\AppServ\www\shop\libs\models\Model.class.php on line 97 错误

找了半天了没找出来

怎么调试出来?用什么工具?



相关链接

php Web开发

伪LOLI控 10 years ago

问题已经解决。
php5.2.6 版本低
不支持匿名函数,也就是闭包

西野加奈. answered 10 years ago

Your Answer