首頁 >資料庫 >mysql教程 >為什麼我的 PHP PDO 準備語句會拋出「SQLSTATE[HY093]:無效的參數號碼」?

為什麼我的 PHP PDO 準備語句會拋出「SQLSTATE[HY093]:無效的參數號碼」?

Patricia Arquette
Patricia Arquette原創
2024-12-16 08:48:16865瀏覽

Why Does My PHP PDO Prepared Statement Throw

PHP PDOException: "SQLSTATE[HY093]: Invalid Parameter Number"

調試PHP PDOException 可能具有挑戰性,尤其是當遇到“SQLSTATE[HY093]:無效的參數號碼”錯誤。此錯誤通常表示在預準備語句中命名參數的使用不正確。

考慮以下PHP 程式碼:

function add_persist($db, $user_id) {
    $hash = md5("per11".$user_id."sist11".time());
    $future = time()+(60*60*24*14);
    $sql = "INSERT INTO persist (user_id, hash, expire) VALUES (:user_id, :hash, :expire) ON DUPLICATE KEY UPDATE hash=:hash";
    $stm = $db->prepare($sql);
    $stm->execute(array(":user_id" => $user_id, ":hash" => $hash, ":expire" => $future));
    return $hash;
}

執行此函數時,出現錯誤「SQLSTATE[HY093]: Invalid」參數號」可能會出現。根本原因在於呼叫execute()方法方法的行。子句對插入和更新操作使用相同的參數名稱“:hash”。 :

透過為更新子句中的雜湊值提供唯一的參數名稱“:hash2”,您可以解決“SQLSTATE[HY093]:無效的參數編號”錯誤。 PDO 驅動程式可以正確地將參數對應到準備好的 SQL 語句。

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

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