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

发布于 2017-05-16 16:46:05 字数 1599 浏览 1201 评论 1

/**
* 根据字段的键值对数组,形成插入语句,并执行
*
* @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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

偏爱自由 2017-10-01 06:50:23

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文