繁体   English   中英

无效的PDO MySQL语句 - 语法错误

[英]Invalid PDO MySQL Statement - Error in Syntax

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

$test_id = '1';
$option = 'a';
$ab_email = 'test@testing.com';

$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)
  • 访问次数为int(10),默认值为1
  • 电子邮件是varchar(255)并且是唯一的

给出的错误是:

致命错误:带有消息'SQLSTATE [42000]的未捕获异常'PDOException':语法错误或访问冲突:1064 SQL语法中有错误; 查看与您的MySQL服务器版本对应的手册,以便在“选项,访问,电子邮件”附近使用正确的语法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`=?");

对于这个问题,在你列的名称,必须使用反引号`周围的列名(ALT + 96)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM