首頁 >後端開發 >php教程 >為什麼我的 PDO 準備語句會拋出「無效參數號」錯誤?

為什麼我的 PDO 準備語句會拋出「無效參數號」錯誤?

Barbara Streisand
Barbara Streisand原創
2024-12-15 02:46:16965瀏覽

Why Does My PDO Prepared Statement Throw an

PDO 例外:參數編號無效

嘗試執行add_persist 函數時,出現「SQLSTATE[HY093]:無效參數編號」錯誤遇到。此函數將資料插入持久表中,如果發現重複鍵,則更新雜湊值。

檢查程式碼後,很明顯問題出在 SQL 語句上。此語句嘗試綁定 :hash 參數兩次:一次用於 INSERT 操作,另一次用於 ON DUPLICATE KEY UPDATE 運算。

要解決此錯誤,必須修改 SQL 語句以包含唯一的參數標記執行語句時傳遞給語句的每個值。修改後的語句和執行程式碼如下:

$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));

根據PHP文檔,在準備好的語句中使用相同的命名參數標記兩次是無效的。每個值必須有自己唯一的參數標記以避免此錯誤。

以上是為什麼我的 PDO 準備語句會拋出「無效參數號」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn