PHP PDO 中参数编号无效
尝试使用 PDO 执行准备好的语句时,可能会遇到错误“SQLSTATE[HY093” ]:参数号无效。”出现此问题的原因是参数标记的错误使用。
提供的函数 add_persist 使用以下准备好的语句:
INSERT INTO persist (user_id, hash, expire) VALUES (:user_id, :hash, :expire) ON DUPLICATE KEY UPDATE hash=:hash
使用execute() 方法绑定参数值时,该函数使用以下值:
["user_id" => $user_id, "hash" => $hash, "expire" => $future]
但是,准备好的语句包含哈希的重复参数标记,这是 PDO 不允许的。为了解决这个问题,我们需要为每个传递的值分配一个唯一的参数标记。
更正后的代码将是:
$sql = "INSERT INTO persist (user_id, hash, expire) VALUES (:user_id, :hash, :expire) ON DUPLICATE KEY UPDATE hash=:hash2"; $stm = $db->prepare($sql); $stm->execute( array("user_id" => $user_id, "hash" => $hash, "expire" => $future, "hash2" => $hash) );
附加参数 :hash2 确保没有准备好的语句中重复的参数标记,解决了错误。
以上是为什么我的 PHP PDO 准备语句抛出'无效参数号”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!