Failed Execution of Multiple Insert Query: Ursache und Lösung
Die Ausführung einer mehrteiligen Einfügeanfrage kann mit folgender Fehlermeldung scheitern:
SQLSTATE[HY093]: Invalid parameter number: parameter was not defined
แม้ว่าก่อนเรียกใช้ count($matches) mit count($values) übereinstimmen wird, könnte es zu diesem Fehler kommen.
Die Ursache dieses Fehlers liegt darin, dass die Anzahl der Elemente in $values nicht mit der Anzahl der Elemente in $matches übereinstimmt. Wenn $values und $matches nicht die gleiche Anzahl von Elementen enthalten, schlägt die Einfügeanfrage fehl, da die Abfrage X Parameter erwartet, aber nur Y Datenelemente ($matches) erhält. In diesem Fall enthält $values höchstwahrscheinlich bereits Werte. Aus diesem Grund stimmen die Anzahl der Elemente nicht überein.
Um dieses Problem zu vermeiden, muss ein Array immer vor der Schleife initialisiert werden.
Darüber hinaus muss sichergestellt werden, dass die Spalte "hash" einen eindeutigen Index enthält.
Hier ist ein Beispiel für eine korrigierte Codestruktur:
$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 mehrteilige INSERT-Abfrage fehl und wie kann ich das Problem beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!