Heim > Datenbank > MySQL-Tutorial > Wie kann ich mithilfe von PDO-vorbereiteten Anweisungen effizient mehrere Zeilen in eine Datenbank einfügen?

Wie kann ich mithilfe von PDO-vorbereiteten Anweisungen effizient mehrere Zeilen in eine Datenbank einfügen?

Susan Sarandon
Freigeben: 2024-11-09 09:27:02
Original
632 Leute haben es durchsucht

How can I efficiently insert multiple rows into a database using PDO prepared statements?

Effizientes Einfügen mehrerer Zeilen mit vorbereiteten PDO-Anweisungen

Anstatt mehrere Einfügeanweisungen mit separaten Parametern auszuführen, ermöglicht PDO das Einfügen mehrerer Zeilen mit einer einzigen Abfrage. Dieser Ansatz erhöht die Leistung und Sicherheit, indem er die Notwendigkeit vermeidet, die Anweisung mehrmals vorzubereiten und auszuführen.

Um beispielsweise Werte aus dem Array $values ​​in die Tabelle Tabelle einzufügen:

$params = [];
foreach ($values as $value) {
    array_push($params, $value['val1'], $value['val2'], $value['val3']);
}

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

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

$query = "INSERT INTO table VALUES " . $args;
$stmt = DB::getInstance()->prepare($query);
$stmt->execute($params);
Nach dem Login kopieren

In dieser Lösung ist das ? Platzhalter werden dynamisch basierend auf der Anzahl der Zeilen und Spalten generiert. Die Parameter werden dann an ein Array angehängt und als einzelnes Array an die Ausführungsmethode übergeben. Dadurch wird gewährleistet, dass jeder Parameter separat behandelt wird, was die Datensicherheit gewährleistet.

Alternativ: Wenn zu viele Zeilen vorhanden sind, um effizient mit einer einzigen Abfrage eingefügt zu werden, sollten Sie erwägen, sie einzeln auszuführen:

$args = array_fill(0, count($values[0]), '?');
$query = "INSERT INTO table VALUES (".implode(',', $args).")";
$stmt = $pdo->prepare($query);

foreach ($values as $row) {
    $stmt->execute($row);
}
Nach dem Login kopieren

Dies Der Ansatz behält die Sicherheitsvorteile der Verwendung vorbereiteter Anweisungen bei und unterstützt gleichzeitig große Datensätze.

Das obige ist der detaillierte Inhalt vonWie kann ich mithilfe von PDO-vorbereiteten Anweisungen effizient mehrere Zeilen in eine Datenbank einfügen?. 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