首頁 >後端開發 >php教程 >為什麼我的 PHP PDO 程式碼出現「SQLSTATE[HY093]:參數號無效」錯誤?

為什麼我的 PHP PDO 程式碼出現「SQLSTATE[HY093]:參數號無效」錯誤?

Barbara Streisand
Barbara Streisand原創
2024-11-24 15:50:17928瀏覽

Why Am I Getting a

錯誤:PHP PDOException 中參數編號無效

嘗試執行 add_persist 函數時,開發人員可能會遇到錯誤「SQLSTATE[HY093]:無效參數編號」。此錯誤源自於 SQL 查詢中不正確的參數綁定。

在提供的程式碼中,$sql 語句嘗試透過執行 INSERT 和 ON DUPLICATE KEY UPDATE 指令來更新持久表中的資料列。但是,$stm->execute 呼叫中的參數綁定存在差異。具體來說,:hash 參數出現兩次,但根據 PDO 文檔,每個唯一參數標記只能與一個值綁定一次。

要解決此問題,應修改$sql 查詢以包含不同的值每個傳遞的值的參數標記,如下所示:

$sql = "INSERT INTO persist (user_id, hash, expire)
        VALUES (:user_id, :hash, :expire)
        ON DUPLICATE KEY UPDATE hash=:hash2";

此外, $stm->execute呼叫應包含:hash 和:hash 的綁定:hash2參數:

$stm->execute(
    array(":user_id" => $user_id, 
          ":hash" => $hash, 
          ":expire" => $future,
          ":hash2" => $hash)
);

透過解決這個參數綁定問題,add_persist 函數將正確執行 SQL 查詢,而不會觸發「參數編號無效」錯誤。

以上是為什麼我的 PHP PDO 程式碼出現「SQLSTATE[HY093]:參數號無效」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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