Frage:
In einer PDO-Klasse, die für mehrere Einfügungen konzipiert ist, Trotz der Erstellung einer parametrisierten Abfrage tritt beim Ausführen der Abfrage ein Fehler „Array-zu-String-Konvertierung“ auf. Wie kann dieser Fehler behoben werden?
Antwort:
Um diesen Fehler zu beheben, besteht ein Ansatz darin, das Datenarray zu durchlaufen und die Werte einzeln mit bindValue anstatt das gesamte Array zu binden. Dadurch wird sichergestellt, dass jeder Wert ordnungsgemäß an einen bestimmten Parameter gebunden ist.
Hier ist ein Beispiel für die Implementierung dieses Ansatzes:$query = "INSERT INTO $table (key1, key2, key3) VALUES "; $qPart = array_fill(0, count($data), "(?, ?, ?)"); $query .= implode(",", $qPart); $stmt = $this->start->prepare($query); $i = 1; foreach ($data as $item) { $stmt->bindValue($i++, $item['key1']); $stmt->bindValue($i++, $item['key2']); $stmt->bindValue($i++, $item['key3']); } $stmt->execute();
foreach-Schleife verwenden innerhalb der Prepare-Anweisung, um Werte für jede Zeile zu binden:
$stmt = $pdo->prepare("INSERT INTO foo VALUES (1, 2, 3)"); foreach($data as $item) { $stmt->execute($item); }
Das obige ist der detaillierte Inhalt vonPDO MySQL: Wie füge ich mehrere Zeilen in eine Abfrage ein, ohne dass der Fehler „Array-zu-String-Konvertierung' auftritt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!