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!