Heim  >  Artikel  >  Datenbank  >  Kann ich eine einzelne vorbereitete Anweisung verwenden, um mehrere Zeilen in PDO einzufügen?

Kann ich eine einzelne vorbereitete Anweisung verwenden, um mehrere Zeilen in PDO einzufügen?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-06 21:18:02370Durchsuche

Can I Use a Single Prepared Statement to Insert Multiple Rows in PDO?

Einfügen mehrerer Zeilen mithilfe vorbereiteter Anweisungen in PDO

Das effiziente Einfügen von Daten in eine Datenbank ist entscheidend, insbesondere beim Umgang mit großen Datensätzen. Diese Frage untersucht die Möglichkeit, mehrere Zeilen mithilfe einer einzigen vorbereiteten Anweisung in der PDO-Erweiterung von PHP einzufügen, um den Einfügeprozess zu optimieren.

Das Problem:

Es besteht die Notwendigkeit Fügen Sie mithilfe dynamischer Daten aus einem Array mehrere Zeilen in eine Tabelle ein. Ein typischer Ansatz zum Einfügen einer einzelnen Zeile mithilfe von PDO wird demonstriert:

$params = [
    ':val1' => 'val1',
    ':val2' => 'val2',
    ':val3' => 'val3',
];

$sql = "INSERT INTO table VALUES (col1, col2, col3) VALUES (:val1, :val2, :val3)";
$stmt = DB::getInstance()->prepare($sql);
$stmt->execute($params);

Die Antwort:

Das Einfügen mehrerer Zeilen mit einer einzigen vorbereiteten Anweisung ist möglich Erstellen Sie eine einzelne INSERT-Abfrage, die mehrere Werte enthält. Die Parameter werden separat übergeben, um Sicherheit und Flexibilität zu gewährleisten.

Beispiel:

Gegebenes Array von einzufügenden Zeilen:

$rows = [
    ['abc', 'def', 'ghi'],
    ['abc', 'def', 'ghi'],
    ['abc', 'def', 'ghi'],
];

Folgendes Code erstellt eine vorbereitete Abfrage mit Platzhaltern für jede Zeile:

$row_length = count($rows[0]);
$nb_rows = count($rows);
$length = $nb_rows * $row_length;

$args = implode(',', array_map(
    function($el) { return '('.implode(',', $el).')'; },
    array_chunk(array_fill(0, $length, '?'), $row_length)
));

$params = array();
foreach ($rows as $row) {
    foreach ($row as $value) {
        $params[] = $value;
    }
}

$query = "INSERT INTO Table (col1, col2, col3) VALUES " . $args;
$stmt = DB::getInstance()->prepare($query);
$stmt->execute($params);

Die Werte jeder Zeile werden separat als Parameter übergeben, um die Sicherheit zu wahren und das effiziente Einfügen mehrerer Zeilen zu ermöglichen.

Das obige ist der detaillierte Inhalt vonKann ich eine einzelne vorbereitete Anweisung verwenden, um mehrere Zeilen in PDO einzufügen?. 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