php + mysql问题字段名“ 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),问题是,如果在其上插入“ \ 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);