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