PHP PDO 中參數編號無效錯誤
嘗試使用PDO 執行準備好的語句時,可能會遇到錯誤「SQLSTATE[HY093 ]:參數號無效。
提供的函數 add_persist 使用以下準備好的語句:
INSERT INTO persist (user_id, hash, expire) VALUES (:user_id, :hash, :expire) ON DUPLICATE KEY UPDATE hash=:hash
使用execute()方法綁定參數值時,函數使用以下值:
["user_id" => $user_id, "hash" => $hash, "expire" => $future]
但是,準備好的語句包含重複的hash 參數標記,這是PDO 不允許的。為了解決這個問題,我們需要為每個傳遞的值分配一個唯一的參數標記。
更正後的程式碼是:
$sql = "INSERT INTO persist (user_id, hash, expire) VALUES (:user_id, :hash, :expire) ON DUPLICATE KEY UPDATE hash=:hash2"; $stm = $db->prepare($sql); $stm->execute( array("user_id" => $user_id, "hash" => $hash, "expire" => $future, "hash2" => $hash) );
附加參數:hash2確保prepared語句中沒有重複的參數標記,解決了錯誤。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3