Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como inserir várias linhas do array usando o framework CodeIgniter?


Montando um INSERT instrução com várias linhas é muito mais rápida no MySQL do que um INSERT declaração por linha.

Dito isso, parece que você pode estar enfrentando problemas de manipulação de strings no PHP, o que é realmente um problema de algoritmo, não de linguagem. Basicamente, ao trabalhar com strings grandes, você deseja minimizar cópias desnecessárias. Principalmente, isso significa que você deseja evitar a concatenação. A maneira mais rápida e eficiente de memória para construir uma string grande, como inserir centenas de linhas em uma, é tirar proveito do implode() atribuição de funções e arrays.
$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));

A vantagem dessa abordagem é que você não copia e copia novamente a instrução SQL que montou até agora com cada concatenação; em vez disso, o PHP faz isso uma vez no implode() demonstração. Este é um grande vencer.

Se você tiver muitas colunas para montar e uma ou mais forem muito longas, você também poderá criar um loop interno para fazer a mesma coisa e usar implode() para atribuir a cláusula de valores à matriz externa.