Heim > Datenbank > MySQL-Tutorial > Warum führt die zweimalige Verwendung desselben benannten Parameters in einer PDO INSERT...ON DUPLICATE KEY UPDATE-Abfrage zu einem Fehler „Ungültige Parameternummer'?

Warum führt die zweimalige Verwendung desselben benannten Parameters in einer PDO INSERT...ON DUPLICATE KEY UPDATE-Abfrage zu einem Fehler „Ungültige Parameternummer'?

Susan Sarandon
Freigeben: 2024-12-10 14:57:09
Original
667 Leute haben es durchsucht

Why Does Using the Same Named Parameter Twice in a PDO INSERT...ON DUPLICATE KEY UPDATE Query Cause a

PHP PDOException: Ungültige Parameternummer

Problem:

Beim Erstellen einer INSERT-Abfrage mit Eine ON DUPLICATE KEY UPDATE-Klausel kann dazu führen, dass ein benannter Parametermarker zweimal in der Methodeexecute() verwendet wird Fehler „SQLSTATE[HY093]: Ungültige Parameternummer“.

Lösung:

Um dieses Problem zu beheben, weisen Sie jedem Wert in der Methodeexecute() unterschiedliche Parametermarkierungen zu . Hier ist der aktualisierte Code:

$sql = "INSERT INTO persist (user_id, hash, expire)
        VALUES (:user_id, :hash, :expire)
        ON DUPLICATE KEY UPDATE hash=:hash2";
$stm->execute(
    array(":user_id" => $user_id,
          ":hash" => $hash,
          ":expire" => $future,
          ":hash2" => $hash)
);
Nach dem Login kopieren

Erklärung:

In der PDO-Dokumentation heißt es: „Sie können einen benannten Parametermarker mit demselben Namen nicht zweimal in einer vorbereiteten Anweisung verwenden.“ ." Dies liegt daran, dass jeder an die Abfrage übergebene Wert über eine eindeutige Parametermarkierung verfügen muss. Durch Zuweisen unterschiedlicher Parametermarkierungen für den aktualisierten Hashwert (:hash2) wird das Problem behoben.

Das obige ist der detaillierte Inhalt vonWarum führt die zweimalige Verwendung desselben benannten Parameters in einer PDO INSERT...ON DUPLICATE KEY UPDATE-Abfrage zu einem Fehler „Ungültige Parameternummer'?. 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