PDO 異常:「SQLSTATE[HY093]:無效的參數號碼」已解決
在嘗試執行PDO 準備好的語句時,您遇到了錯誤「SQLSTATE[HY093]:參數編號無效」。檢查提供的程式碼,很明顯您有多個同名的命名參數。
問題在於您在 SQL 語句和對應的執行呼叫中使用命名參數。具體來說,您使用了參數「:hash」兩次,這在 PDO 準備好的語句中是不允許的。
要解決此錯誤,請如下所示修改程式碼:
$sql = "INSERT INTO persist (user_id, hash, expire) VALUES (:user_id, :hash, :expire) ON DUPLICATE KEY UPDATE hash=:hash2";
中這個更新的語句,引入了一個額外的命名參數「:hash2」來取代第二次出現的「:hash」。
此外,execute() 呼叫應進行相應修改:
$stm->execute( array(":user_id" => $user_id, ":hash" => $hash, ":expire" => $future, ":hash2" => $hash) );
透過提供不同的命名參數,可以避免因參數冗餘而導致的「SQLSTATE[HY093]」錯誤。這種方法可確保正確的參數綁定和準備好的語句的成功執行。
以上是如何解決 PDO 異常:「SQLSTATE[HY093]:無效的參數號碼」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!