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

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

Linda Hamilton
發布: 2024-12-08 07:22:11
原創
329 人瀏覽過

Why Does My PHP PDO Prepared Statement Throw

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板