无效的PDO MySQL陈述式-语法错误

威尔·凯斯

因此,我有以下PDO语句,它是页面上几个类似构造的语句之一。其余的都工作正常,所以我对为什么这说明无效语法感到困惑。

$test_id = '1';
$option = 'a';
$ab_email = '[email protected]';

$stmt = $pdo_db->prepare("INSERT INTO `ab_tests_visitors` (test_id,option,visits,email) VALUES (?,?,?,?) ON DUPLICATE KEY UPDATE email=?");
$stmt->execute(array($test_id,$option,1,$ab_email,$ab_email));

数据库的模式有5列,其中2列是索引。

  • visitor_id是int(10)和auto_increment,也是主要的
  • test_id是int(10)
  • 选项是varchar(100)
  • visits为int(10),默认值为1
  • 电子邮件是varchar(255)并且唯一

给出的错误是:

致命错误:消息“ SQLSTATE [42000]”未捕获的异常“ PDOException”:语法错误或访问冲突:1064 SQL语法有错误;检查与您的MySQL服务器版本相对应的手册,以在'option,visits,email)VALUES(?,?,?,?)ON DUPLICATE KEY UPDATE email =?附近使用正确的语法。在第1行

西尔科

optionMySQL的关键字如果要使用它作为标识符,请确保始终用反引号将其括起来(无论如何也应使用标识符):

$stmt = $pdo_db->prepare("INSERT INTO `ab_tests_visitors` (`test_id`,`option`,`visits`,`email`) VALUES (?,?,?,?) ON DUPLICATE KEY UPDATE `email`=?");

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章