Heim >Backend-Entwicklung >PHP-Tutorial >Warum erhalte ich „SQLSTATE[HY093]: Ungültige Parameternummer' in meiner vorbereiteten Mehrfach-INSERT-Abfrage?
Fehler beim Beheben von „SQLSTATE[HY093]: Ungültige Parameternummer“ in der vorbereiteten Mehrfacheinfügungsabfrage
Beim Versuch, eine Mehrfacheinfügungsabfrage auszuführen, Es kann ein Fehler mit der Meldung „SQLSTATE[HY093]: Ungültige Parameternummer: Parameter wurde nicht definiert“ auftreten. Obwohl übereinstimmende Zählwerte für das Parameterarray und die Eingabedatenelemente vorhanden sind, bleibt dieser Fehler bestehen.
Verstehen des Fehlers
Dieser Fehler entsteht aufgrund einer Nichtübereinstimmung zwischen der Anzahl von Elemente im Parameterarray ($values) und die Eingabedaten ($matches). Beim Ausführen einer vorbereiteten Anweisung erwartet die Abfrage eine bestimmte Anzahl von Parametern und jede Diskrepanz führt zu diesem Fehler.
Problem lösen
Um dieses Problem zu beheben, Stellen Sie sicher, dass $values initialisiert ist, bevor Sie in die Schleife eintreten, die die Parameter generiert. Dadurch wird verhindert, dass bereits vorhandene Werte die Zählung beeinflussen. Darüber hinaus wird die Überprüfung des Vorhandenseins eines eindeutigen Index für die „Hash“-Spalte in der Datenbank potenzielle Konflikte weiter verhindern.
Überarbeiteter Code
Hier ist der überarbeitete Code: Einbeziehung dieser Überarbeitungen:
$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 erhalte ich „SQLSTATE[HY093]: Ungültige Parameternummer' in meiner vorbereiteten Mehrfach-INSERT-Abfrage?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!