Heim > Datenbank > MySQL-Tutorial > Warum schlägt meine mehrteilige INSERT-Abfrage fehl und wie kann ich das Problem beheben?

Warum schlägt meine mehrteilige INSERT-Abfrage fehl und wie kann ich das Problem beheben?

Mary-Kate Olsen
Freigeben: 2024-12-25 07:36:28
Original
965 Leute haben es durchsucht

Why Does My Multi-Part INSERT Query Fail, and How Can I Fix It?

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
Nach dem Login kopieren

แม้ว่าก่อนเรียกใช้ 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);
Nach dem Login kopieren

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!

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