調試PHP PDOException 可能具有挑戰性,尤其是當遇到“SQLSTATE[HY093]:無效的參數號碼”錯誤。此錯誤通常表示在預準備語句中命名參數的使用不正確。
考慮以下PHP 程式碼:
function add_persist($db, $user_id) { $hash = md5("per11".$user_id."sist11".time()); $future = time()+(60*60*24*14); $sql = "INSERT INTO persist (user_id, hash, expire) VALUES (:user_id, :hash, :expire) ON DUPLICATE KEY UPDATE hash=:hash"; $stm = $db->prepare($sql); $stm->execute(array(":user_id" => $user_id, ":hash" => $hash, ":expire" => $future)); return $hash; }
執行此函數時,出現錯誤「SQLSTATE[HY093]: Invalid」參數號」可能會出現。根本原因在於呼叫execute()方法方法的行。子句對插入和更新操作使用相同的參數名稱“:hash”。 :
透過為更新子句中的雜湊值提供唯一的參數名稱“:hash2”,您可以解決“SQLSTATE[HY093]:無效的參數編號”錯誤。 PDO 驅動程式可以正確地將參數對應到準備好的 SQL 語句。以上是為什麼我的 PHP PDO 準備語句會拋出「SQLSTATE[HY093]:無效的參數號碼」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!