[英]problem with php + mysql ( field name “group” )
public function insert($table, $data = array()) {
$fieldnames = array_keys ( $data );
var_dump(implode ( ' ,', $fieldnames ));
$name = '( ' . implode ( ' ,', $fieldnames ) . ' )';
$value = '(:' . implode ( ', :', $fieldnames ) . ' )';
$query = "INSERT INTO $table";
$query .= $name . ' VALUES ' . $value;
var_dump($query);
$insert = $this->start->prepare ( $query );
return $insert->execute ( $data );
}
问题:好的,我有一个函数可以帮助我简化插入语句(pdo),问题是当我在其中插入“组”名称时插入字段
$a['group'] = $_POST['group'];
$a['tag'] = $_POST['tag'];
$a['information'] = $_POST['information'];
$status= $this->insert ( 'groups', $a);
它将产生一个mysql错误,如
PDOStatement :: execute()[pdostatement.execute]:SQLSTATE [42000]:语法错误或访问冲突:1064您的SQL语法有错误;请参见参考。 检查与您的MySQL服务器版本相对应的手册以获取正确的语法,以在'group,tag,information)VALUES('agroup','atag','ainformation')'附近使用
这是查询
INSERT INTO groups( group ,tag ,information ) VALUES (:group, :tag, :information )
我猜应该是
INSERT INTO groups( "group" ,"tag" ,"information" ) VALUES (:group, :tag, :information )
我不确定我们应该从哪里开始。
感谢您的光临
亚当·拉玛丹(Adam Ramadhan)
带引号的报价group
。
`group`
group
是SQL中的保留字。 您可能已经使用过...
GROUP BY `id` DESC
...或之前类似。
如果使用> = PHP 5.3 ...
$fieldnames = array_map(function($field) {
return "`$field`";
}, $fieldnames);
您在哪里:
INSERT INTO groups( "group" ,"tag" ,"information" ) ...
您需要具备:
INSERT INTO `groups` ( `group` ,`tag` ,`information` ) ...
执行以下操作:
$groups = array('group','tag','information');
$mysql_groups = '`' . implode('`,`', $groups) . '`';
$sql = 'INSERT INTO `groups` (' . $mysql_groups . ') ...';
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.