未捕获的异常 'PDOException' 带有消息 'SQLSTATE[HY093]: Invalid parameter number'
本文介绍了未捕获的异常 'PDOException' 带有消息 'SQLSTATE[HY093]: Invalid parameter number'的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
每当我尝试使用 PDO 插入我的数据库时,我都会收到错误消息.
I'm receiving an error whenever I attempt to insert into my database using PDO.
save 函数生成查询字符串和绑定,两者看起来都是正确的.
The save function generates both the query string and the bindings which both seem correct.
query = INSERT INTO am_administrator (firstName,lastName,username,password,email,isSuperUser,dateCreated,dateLastModified) VALUES (:firstName,:lastName,:username,:password,:email,:isSuperUser,:dateCreated,:dateLastModified) ON DUPLICATE KEY UPDATE firstName = :firstName,lastName = :lastName,username = :username,password = :password,email = :email,isSuperUser = :isSuperUser,dateCreated = :dateCreated,dateLastModified = :dateLastModified;
bindings = array(8) {
[":firstName"]=> string(5) "First"
[":lastName"]=> string(4) "Last"
[":username"]=> string(7) "cova-fl"
[":password"]=> string(8) "password"
[":email"]=> string(16) "test@testing.com"
[":isSuperUser"]=> int(1) "1"
[":dateCreated"]=> string(19) "2016-05-11 02:40:15"
[":dateLastModified"]=> string(19) "2016-05-11 02:40:15"
}
每当我将查询放入工作台时,我都没有问题,但是当我尝试在代码中运行它时,我收到致命错误:未捕获的异常 'PDOException',消息为 'SQLSTATE[HY093]:无效的参数编号',这让我感到困惑,因为绑定参数的数量与绑定键和数字匹配.任何人都可以在这个问题上启发我吗?
Whenever I put the query into workbench I have no problems, but when trying to run it in code I get Fatal Error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY093]: Invalid parameter number' which confuses me since the number of bindings params matches the bindings keys and nummbers. Can anyone enlighten me on this issue?
推荐答案
我认为这可能是因为您在语句中对每个绑定进行了两次 decared,例如:firstname 出现在 VALUES 子句以及 ON DUPLICATE KEY UPDATE 子句中.
I think this might be because you have decared each binding twice in the statement e.g. :firstname appears in the VALUES clause as well as the ON DUPLICATE KEY UPDATE clause.
您只向 $stmt->execute 传递了 8 个绑定,但 PDO 正在寻找 16 个.
You only pass 8 bindings to the $stmt->execute but PDO is looking for 16.
您可以尝试在 ON DUPLICATE KEY UPDATE 子句中对它们的命名略有不同,为您提供一个查询,例如
You could try naming them slightly different in the ON DUPLICATE KEY UPDATE clause giving you a query such as e.g.
<代码>INSERT INTO am_administrator (firstName,lastName,username,password,email,isSuperUser,dateCreated,dateLastModified) VALUES (:firstName,:lastName,:username,:password,:email,:isSuperUser,:dateCreated,:dateLastModified) ON DUPLICATE KEY UPDATEfirstName = :update_firstName,lastName = :update_lastName,username = :update_username,password = :update_password,email = :update_email,isSuperUser = :update_isSuperUser,dateCreated = :update_dateCreated,dateLastModified = :update_dateLastModified;
这篇关于未捕获的异常 'PDOException' 带有消息 'SQLSTATE[HY093]: Invalid parameter number'的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!