Heim > Backend-Entwicklung > PHP-Tutorial > Warum löst mein PHP-PDO-Code den Fehler „SQLSTATE[HY093]: Ungültige Parameternummer' aus?

Warum löst mein PHP-PDO-Code den Fehler „SQLSTATE[HY093]: Ungültige Parameternummer' aus?

Linda Hamilton
Freigeben: 2024-11-30 06:51:10
Original
887 Leute haben es durchsucht

Why Does My PHP PDO Code Throw a

PDOException: „SQLSTATE[HY093]: Ungültige Parameternummer“ in PHP

Wenn bei der Verwendung des PDO von PHP der Fehler „SQLSTATE[HY093]: Ungültige Parameternummer“ auftritt , weist dies normalerweise auf ein Problem mit der Parameterbindung in der SQL-Anweisung hin. In diesem speziellen Fall stimmt die Anzahl der benannten Platzhalter in der vorbereiteten SQL-Anweisung nicht mit der Anzahl der an die Methodeexecute() übergebenen Werte überein.

Der bereitgestellte Code wird mit den eindeutigen Spalten in die Persistenztabelle eingefügt Benutzer-ID, Hash und Ablaufdatum und aktualisiert die Hash-Spalte, wenn bereits eine Zeile mit der angegebenen Benutzer-ID vorhanden ist. Die SQL-Anweisung enthält jedoch eine doppelte benannte Parametermarkierung für :hash.

Um diesen Fehler zu beheben, können Sie einen anderen benannten Parameter für die ON DUPLICATE KEY UPDATE-Klausel verwenden. Hier ist der korrigierte Code:

$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,
    )
);
Nach dem Login kopieren

In dieser korrigierten Version wird der Parameter :hash2 verwendet, um das Bindungsproblem zu beheben und sicherzustellen, dass die SQL-Anweisung die richtige Anzahl an Platzhaltern und Werten hat.

Das obige ist der detaillierte Inhalt vonWarum löst mein PHP-PDO-Code den Fehler „SQLSTATE[HY093]: Ungültige Parameternummer' aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage