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

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

Susan Sarandon
Susan Sarandon原創
2024-12-10 14:57:09656瀏覽

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

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