Heim  >  Artikel  >  Datenbank  >  PDO MySQL: Wie füge ich mehrere Zeilen in eine Abfrage ein, ohne dass der Fehler „Array-zu-String-Konvertierung“ auftritt?

PDO MySQL: Wie füge ich mehrere Zeilen in eine Abfrage ein, ohne dass der Fehler „Array-zu-String-Konvertierung“ auftritt?

Susan Sarandon
Susan SarandonOriginal
2024-11-07 04:57:02626Durchsuche

PDO MySQL: How to Insert Multiple Rows in One Query Without

PDO MySQL: Mehrere Zeilen in eine Abfrage einfügen

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();
Alternativ können Sie die

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);
}
Dieser Ansatz führt die Abfrage mehrmals aus, eine für jede Zeile. Es ist jedoch einfacher zu implementieren als der vorherige Ansatz.

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!

Stellungnahme:
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