PHP PDOException:解决“无效参数编号”错误
当查询尝试将不正确数量的参数绑定到时,通常会发生此错误PDO 准备好的声明。在提供的代码中,错误可能是由于在查询字符串中使用命名占位符造成的。
原始查询:
$sql = "INSERT INTO persist (user_id, hash, expire) VALUES (:user_id, :hash, :expire) ON DUPLICATE KEY UPDATE hash=:hash";
使用相同的命名占位符“:hash”初始插入和更新。但是,PDO 需要为每个绑定的值提供唯一的参数标记。
要解决此问题,请重命名更新子句中的占位符:
$sql = "INSERT INTO persist (user_id, hash, expire) VALUES (:user_id, :hash, :expire) ON DUPLICATE KEY UPDATE hash=:hash2";
此外,将参数数组绑定到execute() 方法:
$stm->execute(array(":user_id" => $user_id, ":hash" => $hash, ":expire" => $future, ":hash2" => $hash));
这个修改保证了每个被绑定的值都有唯一的参数标记,解决了“参数无效”的问题数字”错误。
以上是如何解决准备语句中的 PHP PDOException'参数编号无效”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!