首页 >后端开发 >php教程 >为什么我的 PHP PDO 代码抛出'SQLSTATE[HY093]:无效的参数号”错误?

为什么我的 PHP PDO 代码抛出'SQLSTATE[HY093]:无效的参数号”错误?

Linda Hamilton
Linda Hamilton原创
2024-11-30 06:51:10824浏览

Why Does My PHP PDO Code Throw a

PDOException: "SQLSTATE[HY093]: Invalid parameter number" in PHP

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

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn