Heim >Datenbank >MySQL-Tutorial >Warum schlägt meine vorbereitete PDO-Anweisung beim Einfügen mehrerer Datensätze mit „SQLSTATE[HY093]: Ungültige Parameternummer' fehl?
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
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[] = '(?)'; }
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)
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!