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]
但是,准备好的语句包含重复的 hash 参数标记,这是 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确保prepared语句中没有重复的参数标记,解决了错误。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3