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);
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); }
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!