Heim >Backend-Entwicklung >PHP-Tutorial >Warum schlägt meine Mehrfach-SQL-INSERT-Abfrage mit „SQLSTATE[HY093]: Ungültige Parameternummer' fehl?
Unerwarteter Fehler bei der Mehrfacheinfügungsabfrage
Das Codefragment versucht, eine SQL-Abfrage vorzubereiten und auszuführen, um mehrere Werte in eine Tabelle einzufügen. Die Ausführung schlägt jedoch mit dem Fehler „SQLSTATE[HY093]: Ungültige Parameternummer: Parameter wurde nicht definiert“ fehl.
Fehlerursache
Der Fehler tritt auf, weil Die Anzahl der Elemente im Array $values stimmt nicht mit der Anzahl der Elemente im Array $matches überein. Die SQL-Abfrage erwartet eine bestimmte Anzahl von Parametern, aber der PHP-Code stellt andere Zahlen bereit.
Lösung
Um den Fehler zu beheben, stellen Sie sicher, dass die Werte $values und $ Übereinstimmungs-Arrays enthalten die gleiche Anzahl an Elementen. Dies kann erreicht werden, indem das Array $values vor der Schleife initialisiert wird.
Zusätzlich wird empfohlen zu prüfen, ob die Hash-Spalte einen eindeutigen Index hat. Ist dies nicht der Fall, funktioniert die ON DUPLICATE KEY UPDATE-Klausel möglicherweise nicht wie erwartet.
Überarbeiteter Code
$matches = array('1'); $count = count($matches); $values = []; for($i = 0; $i < $count; ++$i) { $values[] = '(?)'; } // INSERT INTO DATABASE $sql = "INSERT INTO hashes (hash) VALUES " . implode(', ', $values) . " ON DUPLICATE KEY UPDATE hash=values(hash)"; $stmt = $dbh->prepare($sql); $data = $stmt->execute($matches);
Das obige ist der detaillierte Inhalt vonWarum schlägt meine Mehrfach-SQL-INSERT-Abfrage mit „SQLSTATE[HY093]: Ungültige Parameternummer' fehl?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!