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 );
}
Run Code Online (Sandbox Code Playgroud)
问题:好的,我有一个功能,可以帮助我简化插入语句(pdo)问题是当我插入一个字段,如果"组"名称在上面
$a['group'] = $_POST['group'];
$a['tag'] = $_POST['tag'];
$a['information'] = $_POST['information'];
$status= $this->insert ( 'groups', $a);
Run Code Online (Sandbox Code Playgroud)
它会生成像mysql这样的错误
PDOStatement :: execute()[pdostatement.execute]:SQLSTATE [42000]:语法错误或访问冲突:1064您的SQL语法中有错误; 查看与您的MySQL服务器版本对应的手册,以便在"组,标签,信息"附近使用正确的语法VALUES('agroup','atag','ainformation')'
这是查询
INSERT INTO groups( group ,tag ,information ) VALUES (:group, :tag, :information )
Run Code Online (Sandbox Code Playgroud)
我猜它应该是
INSERT INTO groups( "group" ,"tag" ,"information" ) VALUES (:group, :tag, :information )
Run Code Online (Sandbox Code Playgroud)
我不知道我们应该从哪里开始.
谢谢你的关注
亚当拉马丹
ale*_*lex 10
group
用反引号引用.
`group`
Run Code Online (Sandbox Code Playgroud)
group
是SQL中的保留字.你可能用过......
GROUP BY `id` DESC
Run Code Online (Sandbox Code Playgroud)
......之前......
如果使用> = PHP 5.3 ...
$fieldnames = array_map(function($field) {
return "`$field`";
}, $fieldnames);
Run Code Online (Sandbox Code Playgroud)