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

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

Barbara Streisand
Freigeben: 2024-12-15 02:46:16
Original
960 Leute haben es durchsucht

Why Does My PDO Prepared Statement Throw an

PDO-Ausnahme: Ungültige Parameternummer

Beim Versuch, die Funktion add_persist auszuführen, wird ein Fehler „SQLSTATE[HY093]: Ungültige Parameternummer“ angezeigt angetroffen wird. Die Funktion fügt Daten in die Persist-Tabelle ein und aktualisiert den Hash-Wert, wenn ein doppelter Schlüssel gefunden wird.

Bei der Prüfung des Codes wird deutlich, dass das Problem in der SQL-Anweisung liegt. Die Anweisung versucht zweimal, den :hash-Parameter zu binden: einmal für die INSERT-Operation und noch einmal für die ON DUPLICATE KEY UPDATE-Operation.

Um diesen Fehler zu beheben, muss die SQL-Anweisung so geändert werden, dass sie eine eindeutige Parametermarkierung für enthält Jeder Wert wird bei der Ausführung an die Anweisung übergeben. Die geänderte Anweisung und der Ausführungscode lauten wie folgt:

$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

Laut der PHP-Dokumentation ist die zweimalige Verwendung derselben benannten Parametermarkierung in einer vorbereiteten Anweisung ungültig. Jeder Wert muss über eine eigene eindeutige Parametermarkierung verfügen, um diesen Fehler zu vermeiden.

Das obige ist der detaillierte Inhalt vonWarum löst meine vorbereitete 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