Wie fügt man mehrere Zeilen mit MySQLi-vorbereiteten Anweisungen effizient ein?

Susan Sarandon
Freigeben: 2024-10-20 16:35:02
Original
793 Leute haben es durchsucht

How to Insert Multiple Rows Using MySQLi Prepared Statements Efficiently?

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

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

Zusätzliche Ressourcen:

  • [SELECT mit dynamischer Anzahl von Werten in IN()](https:/ /stackoverflow.com/questions/2216867/select-with-dynamic-number-of-values-in-in)
  • [SELECT mit dynamischer Anzahl von LIKE-Bedingungen](https://stackoverflow.com/questions /6022078/select-with-dynamic-number-of-like-conditions)

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!

Quelle:php
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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!