PDO准备语句错误1064

时间:2013-12-12 21:18:17

标签: php pdo prepared-statement mysql-error-1064 insert-into

我在尝试将数据插入表格时遇到此错误。

数组([0] => 42000 [1] => 1064 [2] =>您的SQL语法出错;请查看与您的MySQL服务器版本对应的手册,以获取正确的语法靠近'username ,密码,名字,姓氏,电子邮件, emailcode``)值(第1行'')

我的代码看起来像这样.. $ reg_data是一个包含$ _POST数据的数组。

        $fields = '`' . implode('`, `',array_keys($reg_data)) . '`';
        $data = '\'' . implode('\', \'', $reg_data) . '\'';


        $prep = $this->db->prepare('INSERT INTO `users` (`'.$fields.'`) VALUES (?)');

        $prep->bindParam(1, $data);

        $prep->execute();

        print_r($prep->errorInfo());

1 个答案:

答案 0 :(得分:0)

正如您所看到的错误,它清楚地显示了使用双反向电子邮件代码``

在implode中添加了backtiks后,您将在insert查询中再次添加 ('.$fields.'

更改

 $fields = '`' . implode('`, `',array_keys($reg_data)) . '`';

 $fields =  implode('`, `',array_keys($reg_data)) ;

或者只使用没有bacticks,因为你已经使用implode

添加了
$prep = $this->db->prepare('INSERT INTO `users` ('.$fields.') VALUES (?)');