Heim > Backend-Entwicklung > PHP-Tutorial > Warum löst meine vorbereitete PHP-PDO-Anweisung den Fehler „Ungültige Parameternummer' aus?

Warum löst meine vorbereitete PHP-PDO-Anweisung den Fehler „Ungültige Parameternummer' aus?

Susan Sarandon
Freigeben: 2024-11-25 09:25:18
Original
231 Leute haben es durchsucht

Why Does My PHP PDO Prepared Statement Throw an

Ungültige Parameternummer-Fehler in PHP PDO

Beim Versuch, eine vorbereitete Anweisung mit PDO auszuführen, kann der Fehler „SQLSTATE[HY093 ]: Ungültige Parameternummer.“ Dieses Problem entsteht durch die falsche Verwendung von Parametermarkierungen.

Die bereitgestellte Funktion add_persist verwendet die folgende vorbereitete Anweisung:

INSERT INTO persist (user_id, hash, expire) VALUES (:user_id, :hash, :expire) ON DUPLICATE KEY UPDATE hash=:hash
Nach dem Login kopieren

Beim Binden der Parameterwerte mithilfe der Methodeexecute() wird die Funktion verwendet die folgenden Werte:

["user_id" => $user_id, "hash" => $hash, "expire" => $future]
Nach dem Login kopieren

Die vorbereitete Anweisung enthält jedoch eine doppelte Parametermarkierung für Hash, was von PDO nicht zulässig ist. Um dieses Problem zu lösen, müssen wir jedem übergebenen Wert eine eindeutige Parametermarkierung zuweisen.

Der korrigierte Code wäre:

$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

Der zusätzliche Parameter :hash2 stellt sicher, dass es keine gibt Doppelte Parametermarkierungen in der vorbereiteten Anweisung, wodurch der Fehler behoben wird.

Das obige ist der detaillierte Inhalt vonWarum löst meine vorbereitete PHP-PDO-Anweisung den Fehler „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