Heim > Datenbank > MySQL-Tutorial > Hauptteil

Wie füge ich mithilfe vorbereiteter Anweisungen in PHP mehrere Zeilen in eine Datenbank ein?

Linda Hamilton
Freigeben: 2024-11-09 17:14:02
Original
656 Leute haben es durchsucht

How to Insert Multiple Rows into a Database Using Prepared Statements in PHP?

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...
];
Nach dem Login kopieren

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)
)
Nach dem Login kopieren

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);
Nach dem Login kopieren

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
    // ...
}
Nach dem Login kopieren

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();
}
Nach dem Login kopieren

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!

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