问题描述
||
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),问题是,如果在其上插入“ \ group \”名称,则需要插入字段
$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附近使用
值(\'agroup \',\'atag \',
\'ainformation \')\'
这是查询
INSERT INTO groups( group,tag,information ) VALUES (:group,:tag,:information )
我猜应该是
INSERT INTO groups( \"group\",\"tag\",\"information\" ) VALUES (:group,:information )
我不确定我们应该从哪里开始。
感谢您的光临
亚当·拉玛丹(Adam Ramadhan)
解决方法
您在哪里:
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 . \') ...\';
,用引号引起7ѭ。
例
`group`
group
是SQL中的保留字。您可能已经使用过...
GROUP BY `id` DESC
...或之前类似。
如果使用> = PHP 5.3 ...
$fieldnames = array_map(function($field) {
return \"`$field`\";
},$fieldnames);