Mehrere Zeilen mit vorbereiteten Anweisungen einfügen
Das Einfügen mehrerer Zeilen mit vorbereiteten Anweisungen ist eine bequeme Möglichkeit, einer Datenbank Daten hinzuzufügen und gleichzeitig die Sicherheit zu wahren. Stellen Sie sich vor, Sie müssen ein Array von Werten in Ihre Datenbanktabelle einfügen:
$values = [ [ 'val1' => 'val1', 'val2' => 'val2', 'val3' => 'val3' ], [ 'val1' => 'another_val1', 'val2' => 'another_val2', 'val3' => 'another_val3' ], // and so on... ];
Verwenden einer einzelnen Einfügeabfrage
Um diese Zeilen mithilfe einer vorbereiteten Anweisung einzufügen, haben wir kann INSERT-Abfragen mit mehreren VALUES-Klauseln verwenden:
INSERT INTO table (col1, col2, col3) VALUES ( (:val11, :val21, :val31), (:val12, :val22, :val32), (:val13, :val23, :val33) )
Für jede Zeile erstellen wir einen Satz Parameter und ersetzen die statischen Werte durch benannte Parameter. Dadurch wird sichergestellt, dass jeder Parameter separat gebunden wird.
$params = []; foreach ($values as $row) { $params[':val1' . count($params)] = $row['val1']; $params[':val2' . count($params)] = $row['val2']; $params[':val3' . count($params)] = $row['val3']; } $sql = "INSERT INTO table (col1, col2, col3) VALUES (" . implode(',', array_keys($params)) . ")"; $stmt = DB::getInstance()->prepare($sql); $stmt->execute($params);
Chunking für eine große Anzahl von Zeilen
Wenn Sie eine beträchtliche Anzahl von Zeilen einfügen müssen, ist dies effizienter um sie in kleinere Stapel aufzuteilen, um eine übermäßige Speichernutzung zu vermeiden. Sie können array_chunk verwenden, um das Wertearray in kleinere Abschnitte zu unterteilen.
$chunkSize = 100; // Adjust this to your needs $chunks = array_chunk($values, $chunkSize); foreach ($chunks as $chunk) { // Prepare and execute insert query for each chunk // ... }
Alternativer Ansatz: Einen nach dem anderen EINFÜGEN
Wenn Sie jede Zeile einzeln einfügen müssen, Sie können den folgenden Ansatz verwenden:
$stmt = DB::getInstance()->prepare( "INSERT INTO table (col1, col2, col3) VALUES (:val1, :val2, :val3)" ); foreach ($values as $row) { $stmt->bindParam(':val1', $row['val1']); $stmt->bindParam(':val2', $row['val2']); $stmt->bindParam(':val3', $row['val3']); $stmt->execute(); }
Diese Methode ist weniger effizient, kann aber für große Datensätze erforderlich sein.
Das obige ist der detaillierte Inhalt vonWie füge ich mithilfe vorbereiteter Anweisungen in PHP mehrere Zeilen in eine Datenbank ein?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!