首頁 > 資料庫 > mysql教程 > 為什麼在 PDO INSERT...ON DUPLICATE KEY UPDATE 查詢中兩次使用相同的命名參數會導致「參數號無效」錯誤?

為什麼在 PDO INSERT...ON DUPLICATE KEY UPDATE 查詢中兩次使用相同的命名參數會導致「參數號無效」錯誤?

Susan Sarandon
發布: 2024-12-10 14:57:09
原創
693 人瀏覽過

Why Does Using the Same Named Parameter Twice in a PDO INSERT...ON DUPLICATE KEY UPDATE Query Cause a

PHP PDOException:參數編號無效

問題:

問題:

使用下列指令時ON DUPLICATE KEY UPDATE 子句,在execute()方法可能會導致「SQLSTATE[HY093]:無效參數編號」錯誤。

解決方案:
$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)
);
登入後複製

要解決此問題,請為以下物件指派不同的參數標記execute() 方法中的每個值。以下是更新後的程式碼:

說明:PDO 文件指出「您不能在準備好的語句中兩次使用同名的命名參數標記」 」。這是因為傳遞給查詢的每個值都必須具有唯一的參數標記。透過為更新後的雜湊值(:hash2)分配不同的參數標記,問題得到解決。

以上是為什麼在 PDO INSERT...ON DUPLICATE KEY UPDATE 查詢中兩次使用相同的命名參數會導致「參數號無效」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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