尝试执行 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中文网其他相关文章!