PHP-一个没有发现“)”错误,找了半天,是不是版本问题?
/**
* 根据字段的键值对数组,形成插入语句,并执行
*
* @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;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
问题已经解决。
php5.2.6 版本低
不支持匿名函数,也就是闭包