首页 >后端开发 >php教程 >为什么我的 PDO 准备语句抛出'无效参数号”错误?

为什么我的 PDO 准备语句抛出'无效参数号”错误?

Barbara Streisand
Barbara Streisand原创
2024-12-15 02:46:16965浏览

Why Does My PDO Prepared Statement Throw an

PDO 异常:参数编号无效

尝试执行 add_persist 函数时,出现“SQLSTATE[HY093]:无效参数编号”错误遇到。该函数将数据插入到持久表中,如果发现重复键,则更新哈希值。

检查代码后,很明显问题出在 SQL 语句上。该语句尝试绑定 :hash 参数两次:一次用于 INSERT 操作,另一次用于 ON DUPLICATE KEY UPDATE 操作。

要解决此错误,必须修改 SQL 语句以包含唯一的参数标记执行语句时传递给语句的每个值。修改后的语句和执行代码如下:

$sql = "INSERT INTO persist (user_id, hash, expire) VALUES (:user_id, :hash, :expire) ON DUPLICATE KEY UPDATE hash=:hash2";
$stm->execute(array(":user_id" => $user_id, ":hash" => $hash, ":expire" => $future, ":hash2" => $hash));

根据PHP文档,在准备好的语句中使用相同的命名参数标记两次是无效的。每个值必须有自己唯一的参数标记以避免此错误。

以上是为什么我的 PDO 准备语句抛出'无效参数号”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn