首页  >  文章  >  后端开发  >  为什么我的 PHP PDO 代码中出现'SQLSTATE[HY093]:参数号无效”错误?

为什么我的 PHP PDO 代码中出现'SQLSTATE[HY093]:参数号无效”错误?

Barbara Streisand
Barbara Streisand原创
2024-11-24 15:50:17910浏览

Why Am I Getting a

错误:PHP PDOException 中参数编号无效

尝试执行 add_persist 函数时,开发人员可能会遇到错误“SQLSTATE[HY093]:无效参数编号”。此错误源于 SQL 查询中不正确的参数绑定。

在提供的代码中,$sql 语句尝试通过执行 INSERT 和 ON DUPLICATE KEY UPDATE 命令来更新持久表中的行。但是,$stm->execute 调用中的参数绑定存在差异。具体来说,:hash 参数出现两次,但根据 PDO 文档,每个唯一参数标记只能与一个值绑定一次。

要解决此问题,应修改 $sql 查询以包含不同的值每个传递的值的参数标记,如下所示:

$sql = "INSERT INTO persist (user_id, hash, expire)
        VALUES (:user_id, :hash, :expire)
        ON DUPLICATE KEY UPDATE hash=:hash2";

此外, $stm->execute 调用应包含 :hash 和 :hash 的绑定:hash2 参数:

$stm->execute(
    array(":user_id" => $user_id, 
          ":hash" => $hash, 
          ":expire" => $future,
          ":hash2" => $hash)
);

通过解决这个参数绑定问题,add_persist 函数将正确执行 SQL 查询,而不会触发“参数编号无效”错误。

以上是为什么我的 PHP PDO 代码中出现'SQLSTATE[HY093]:参数号无效”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

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