因此,我有以下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列是索引。
给出的错误是:
致命错误:消息“ SQLSTATE [42000]”未捕获的异常“ PDOException”:语法错误或访问冲突:1064 SQL语法有错误;检查与您的MySQL服务器版本相对应的手册,以在'option,visits,email)VALUES(?,?,?,?)ON DUPLICATE KEY UPDATE email =?附近使用正确的语法。在第1行
option
是MySQL的关键字。如果要使用它作为标识符,请确保始终用反引号将其括起来(无论如何也应使用标识符):
$stmt = $pdo_db->prepare("INSERT INTO `ab_tests_visitors` (`test_id`,`option`,`visits`,`email`) VALUES (?,?,?,?) ON DUPLICATE KEY UPDATE `email`=?");
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句