使用 PHP 的 PDO 时遇到错误 "SQLSTATE[HY093]: Invalid parameter number" ,它通常表示 SQL 语句中的参数绑定存在问题。在这种特定情况下,准备好的 SQL 语句中命名占位符的数量与传递给 execute() 方法的值的数量不匹配。
提供的代码 попытка 插入到持久表中,并具有唯一的列user_id、哈希和过期,如果具有提供的 user_id 的行已存在,则更新哈希列。但是,SQL 语句包含 :hash 的重复命名参数标记。
要解决此错误,您可以为 ON DUPLICATE KEY UPDATE 子句使用不同的命名参数。更正后的代码如下:
$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 参数用于解决绑定问题,确保 SQL 语句具有正确数量的占位符和值。
以上是为什么我的 PHP PDO 代码抛出'SQLSTATE[HY093]:无效的参数号”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!