【问题标题】:PDO prepared statement Error 1064PDO 准备好的语句错误 1064
【发布时间】:2013-12-12 21:18:17
【问题描述】:

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

Array ( [0] => 42000 [1] => 1064 [2] => 您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册,了解在 'username 附近使用的正确语法,password,firstname,lastname,email,emailcode``) VALUES ('' at line 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());

【问题讨论】:

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


    【解决方案1】:

    正如你所看到的错误,它清楚地表明你使用了双反抽动电子邮件代码``

    在 implode 中添加反引号后,您将在插入查询中再次添加 ('.$fields.')

    改变

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

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

    或者只是使用它而不使用它,因为您已经使用 implode 添加了它

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-01-12
      • 1970-01-01
      • 2010-11-30
      • 1970-01-01
      • 2013-09-21
      • 1970-01-01
      相关资源
      最近更新 更多