Mysql
 sql >> Database >  >> RDS >> Mysql

Come inserire più righe dall'array utilizzando il framework CodeIgniter?

Assemblare un INSERT con più righe è molto più veloce in MySQL di un INSERT istruzione per riga.

Detto questo, sembra che potresti riscontrare problemi di gestione delle stringhe in PHP, che è davvero un problema di algoritmo, non di linguaggio. Fondamentalmente, quando si lavora con stringhe di grandi dimensioni, si desidera ridurre al minimo le copie non necessarie. In primo luogo, questo significa che vuoi evitare la concatenazione. Il modo più veloce ed efficiente in termini di memoria per creare una stringa di grandi dimensioni, ad esempio per inserire centinaia di righe in una, è sfruttare implode() funzione e assegnazione di array.

$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));

Il vantaggio di questo approccio è che non copi e ricopia l'istruzione SQL che hai finora assemblato con ogni concatenazione; invece, PHP lo fa una volta nel implode() dichiarazione. Questo è un grande vincere.

Se hai molte colonne da mettere insieme e una o più sono molto lunghe, puoi anche creare un ciclo interno per fare la stessa cosa e usare implode() per assegnare la clausola dei valori all'array esterno.