Heim >Backend-Entwicklung >PHP-Tutorial >Wie fügt man mehrere Zeilen mit MySQLi-vorbereiteten Anweisungen effizient ein?
Einfügen mehrerer Zeilen mit MySQLi-vorbereiteten Anweisungen
Problem:
Sie möchten effizient einfügen mehrere Zeilen in eine Datenbank mithilfe von MySQLi-vorbereiteten Anweisungen. Ihr aktueller Ansatz besteht darin, für jede einzufügende Zeile eine separate Zeichenfolge zu erstellen, was ineffizient ist. Sie suchen nach einer Methode zum Ausführen einer einzelnen vorbereiteten Anweisung, die mehrere Zeilen in einer Ausführung einfügt.
Lösung:
Während vorbereitete Anweisungen normalerweise für einzeilige Operationen verwendet werden, Es gibt eine komplizierte Technik, die das Einfügen mehrerer Zeilen in eine Anweisung ermöglicht. Getestet an einem beispielhaften indizierten Array aus indizierten Arrays ([[1, 2, 3], [4, 5, 6], [7, 8, 9]]), demonstriert der folgende Code den Prozess:
<code class="php">$rows = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]; // Sample indexed array of indexed arrays $rowCount = count($rows); $values = "(" . implode('),(', array_fill(0, $rowCount, '?,?,?')) . ")"; $conn = new mysqli("localhost", "root", "", "myDB"); $stmt = $conn->prepare("INSERT INTO test (col1, col2, col3) VALUES $values"); $stmt->bind_param(str_repeat('i', $rowCount * 3), ...array_merge(...$rows)); $stmt->execute();</code>
Dieser Ansatz erstellt eine einzelne vorbereitete Anweisung („INSERT INTO test (col1, col2, col3) VALUES (...)“) und füllt die Platzhalterwerte aus dem abgeflachten $rows-Array ein. Die Funktion str_repeat wird verwendet, um eine geeignete Anzahl von Platzhalterzeichen für Bindungsparameter zu definieren.
Alternativer Ansatz:
Wenn das Einfügen mehrerer Zeilen die Ausführung einer Schleife erfordert, sollten Sie die Verwendung von a in Betracht ziehen Ansatz für einzeilige vorbereitete Anweisung:
<code class="php">foreach ($rows as $row) { $stmt = $conn->prepare("INSERT INTO test (col1, col2, col3) VALUES (?,?,?)"); $stmt->bind_param('iii', $row[0], $row[1], $row[2]); $stmt->execute(); }</code>
Zusätzliche Ressourcen:
Das obige ist der detaillierte Inhalt vonWie fügt man mehrere Zeilen mit MySQLi-vorbereiteten Anweisungen effizient ein?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!