Heim > Datenbank > MySQL-Tutorial > Warum schlägt meine vorbereitete PDO-Anweisung beim Einfügen mehrerer Datensätze mit „SQLSTATE[HY093]: Ungültige Parameternummer' fehl?

Warum schlägt meine vorbereitete PDO-Anweisung beim Einfügen mehrerer Datensätze mit „SQLSTATE[HY093]: Ungültige Parameternummer' fehl?

Mary-Kate Olsen
Freigeben: 2024-12-13 00:06:16
Original
415 Leute haben es durchsucht

Why Does My PDO Prepared Statement Fail with

Fehlerbehebung bei SQL-Fehlern beim Einfügen mehrerer Datensätze

In einem kürzlich durchgeführten Entwicklungsprojekt wurde ein Codeausschnitt zum Einfügen mehrerer Datensätze in eine Datenbank mithilfe von a entwickelt Bei der vorbereiteten PDO-Anweisung ist ein Fehler aufgetreten:

SQLSTATE[HY093]: Invalid parameter number: parameter was not defined
Nach dem Login kopieren

Trotz der scheinbaren Äquivalenz in der Anzahl der Werte eingefügt (count($matches)) und die Anzahl der Platzhalter (count($values)), ist die Abfrageausführung fehlgeschlagen.

Ursache

Der Fehler wurde verursacht durch ein Missverständnis über die Initialisierung des $values-Arrays. Im Gegensatz zu $matches, das ursprünglich ein leeres Array enthielt, wurde $values ​​mit nicht initialisierten Werten gefüllt. Infolgedessen enthielt $values ​​eine größere Anzahl als $matches, was zum Fehler „Parameter-Mismatch“ führte.

Lösung

Um dieses Problem zu beheben, ist es wichtig, dies explizit zu tun Initialisieren Sie $values ​​als leeres Array, bevor Sie in die Schleife eintreten:

$matches = array('1');
$count = count($matches);
$values = [];
for($i = 0; $i < $count; ++$i) {
    $values[] = '(?)';
}
Nach dem Login kopieren

Mit dieser Änderung stimmen die Anzahlen von $matches und $values ​​überein, sodass dies möglich ist Die Abfrage soll erfolgreich ausgeführt werden.

Zusätzliche Überlegungen

Darüber hinaus ist es ratsam sicherzustellen, dass die Hash-Spalte in der Zieltabelle über einen eindeutigen Index verfügt, um doppelte Schlüssel zu verarbeiten Konflikte. Dies kann erreicht werden, indem nach der INSERT-Anweisung die folgende Zeile hinzugefügt wird:

ON DUPLICATE KEY UPDATE hash=values(hash)
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWarum schlägt meine vorbereitete PDO-Anweisung beim Einfügen mehrerer Datensätze mit „SQLSTATE[HY093]: Ungültige Parameternummer' fehl?. 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