我正在尝试创建一个电子邮件确认脚本。如何修复SQLSTATE [42000]错误;使用预准备语句
这是我的PHP代码:
...
$q = $dbh->prepare("INSERT INTO `email_confirm` (UserID,token,tokenDate) VALUES(:id, :token, UTC_TIMESTAMP()) ON DUPLICATE KEY UPDATE token = VALUES(:token), tokenDate = UTC_TIMESTAMP();");
$result = $q -> execute(array(":id" => $this->id, ":token" => $token));
...
在运行此,我收到以下错误:
Caught exception: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '?), tokenDate = UTC_TIMESTAMP()' at line 1
我在MySQL的专家,但我找不到任何语法在我的代码中出现错误,我很乐意提供一些帮助。
'values()'函数不需要拥有自己的占位符或重复的占位符。只需使用您最初提供值的字段的名称:在重复键集foo = values(foo)'上插入...(foo,...)values($ foo,...)。 mysql会查看'values($ foo,....)'部分并提取在那里提供的值。 –