嘗試執行 add_persist 函數時,開發人員可能會遇到錯誤「SQLSTATE[HY093]:無效參數編號」。此錯誤源自於 SQL 查詢中不正確的參數綁定。
在提供的程式碼中,$sql 語句嘗試透過執行 INSERT 和 ON DUPLICATE KEY UPDATE 指令來更新持久表中的資料列。但是,$stm->execute 呼叫中的參數綁定存在差異。具體來說,:hash 參數出現兩次,但根據 PDO 文檔,每個唯一參數標記只能與一個值綁定一次。
要解決此問題,應修改$sql 查詢以包含不同的值每個傳遞的值的參數標記,如下所示:
$sql = "INSERT INTO persist (user_id, hash, expire) VALUES (:user_id, :hash, :expire) ON DUPLICATE KEY UPDATE hash=:hash2";
此外, $stm->execute呼叫應包含:hash 和:hash 的綁定:hash2參數:
$stm->execute( array(":user_id" => $user_id, ":hash" => $hash, ":expire" => $future, ":hash2" => $hash) );
透過解決這個參數綁定問題,add_persist 函數將正確執行 SQL 查詢,而不會觸發「參數編號無效」錯誤。
以上是為什麼我的 PHP PDO 程式碼出現「SQLSTATE[HY093]:參數號無效」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!