Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie füge ich mehrere Zeilen aus einem Array mit dem CodeIgniter-Framework ein?

Zusammenbau eines INSERT Anweisung mit mehreren Zeilen ist viel schneller in MySQL als ein INSERT Anweisung pro Zeile.

Das heißt, es hört sich so an, als ob Sie in PHP auf Probleme mit der String-Verarbeitung stoßen könnten, was wirklich ein Algorithmusproblem ist, kein Sprachproblem. Wenn Sie mit großen Zeichenfolgen arbeiten, möchten Sie im Grunde unnötiges Kopieren minimieren. In erster Linie bedeutet dies, dass Sie eine Verkettung vermeiden möchten. Die schnellste und speichereffizienteste Methode zum Erstellen einer großen Zeichenfolge, z. B. zum Einfügen von Hunderten von Zeilen auf einmal, besteht darin, die Vorteile von implode() zu nutzen Funktion und Array-Zuweisung.

$sql = array(); 
foreach( $data as $row ) {
    $sql[] = '("'.mysql_real_escape_string($row['text']).'", '.$row['category_id'].')';
}
mysql_query('INSERT INTO table (text, category) VALUES '.implode(',', $sql));

Der Vorteil dieses Ansatzes besteht darin, dass Sie die SQL-Anweisung, die Sie bisher zusammengestellt haben, nicht bei jeder Verkettung kopieren und erneut kopieren müssen. Stattdessen macht PHP dies einmal im implode() Erklärung. Das ist ein großes gewinnen.

Wenn Sie viele Spalten zusammenstellen müssen und eine oder mehrere sehr lang sind, können Sie auch eine innere Schleife erstellen, um dasselbe zu tun, und implode() verwenden um die Werteklausel dem äußeren Array zuzuweisen.