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.