PDO 異常:PHP 中的參數編號無效
嘗試使用PHP 時遇到錯誤「SQLSTATE[HY093]:無效的參數編號」 PDO?根本原因可能與準備語句中的參數使用有關。
問題描述:
在提供的程式碼片段中:
$sql = "INSERT INTO persist (user_id, hash, expire) VALUES (:user_id, :hash, :expire) ON DUPLICATE KEY UPDATE hash=:hash";
有UPDATE 子句中缺少「:hash2」參數標記。這種差異會導致 PDO 異常,因為 PDO 需要為語句中綁定的每個值提供唯一的參數標記。
解決方案:
將準備好的語句的SQL 查詢調整為以下內容:
$sql = "INSERT INTO persist (user_id, hash, expire) VALUES (:user_id, :hash, :expire) ON DUPLICATE KEY UPDATE hash=:hash2";
相應地,修改execute()語句以包含":hash2"參數標記:
$stm->execute( array( ":user_id" => $user_id, ":hash" => $hash, ":expire" => $future, ":hash2" => $hash ) );
背景:
PDO 的prepare() 方法在呼叫execute() 時需要唯一的參數標記來綁定值。不允許使用重複的參數標記,並且在“IN()”子句等子句中不支援為相同參數指派多個值。
以上是為什麼我的 PHP PDO 準備語句會拋出「無效參數號」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!