PHP PDOException:参数编号无效
问题:
使用以下命令构造 INSERT 查询时ON DUPLICATE KEY UPDATE 子句,在execute() 方法可能会导致“SQLSTATE[HY093]:无效参数编号”错误。
解决方案:
要解决此问题,请为以下对象分配不同的参数标记execute() 方法中的每个值。以下是更新后的代码:
$sql = "INSERT INTO persist (user_id, hash, expire) VALUES (:user_id, :hash, :expire) ON DUPLICATE KEY UPDATE hash=:hash2"; $stm->execute( array(":user_id" => $user_id, ":hash" => $hash, ":expire" => $future, ":hash2" => $hash) );
说明:
PDO 文档指出“您不能在准备好的语句中两次使用同名的命名参数标记” ”。这是因为传递给查询的每个值都必须具有唯一的参数标记。通过为更新后的哈希值(:hash2)分配不同的参数标记,问题得到解决。
以上是为什么在 PDO INSERT...ON DUPLICATE KEY UPDATE 查询中两次使用相同的命名参数会导致'参数号无效”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!