PDO 异常:“SQLSTATE[HY093]:无效的参数号”已解决
在尝试执行 PDO 准备好的语句时,您遇到了错误“SQLSTATE[HY093]:参数号无效”。检查提供的代码,很明显您有多个同名的命名参数。
问题在于您在 SQL 语句和相应的执行调用中使用命名参数。具体来说,您使用了参数“:hash”两次,这在 PDO 准备好的语句中是不允许的。
要解决此错误,请按如下所示修改代码:
$sql = "INSERT INTO persist (user_id, hash, expire) VALUES (:user_id, :hash, :expire) ON DUPLICATE KEY UPDATE hash=:hash2";
中这个更新的语句,引入了一个额外的命名参数“:hash2”来替换第二次出现的“:hash”。
此外,execute() 调用应进行相应修改:
$stm->execute( array(":user_id" => $user_id, ":hash" => $hash, ":expire" => $future, ":hash2" => $hash) );
通过提供不同的命名参数,可以避免因参数冗余而导致的“SQLSTATE[HY093]”错误。这种方法可确保正确的参数绑定和准备好的语句的成功执行。
以上是如何解决 PDO 异常:'SQLSTATE[HY093]:无效的参数号”?的详细内容。更多信息请关注PHP中文网其他相关文章!