2009-11-27 6 views
0

Как я могу оптимизировать этот код?PHP MySql Вставить n строк сразу?

$items[0] = "Item-0"; 
$items[1] = "Item-1"; 
$items[2] = "Item-2"; 
$items[3] = "Item-3"; 
... 
$items[n] = "Item-n"; 

foreach($items as $item) { 
    mysql_query("INSERT INTO mytable (item) VALUES ('$item')"); 
} 

Массив это просто пример, и ключевой момент я хотел бы знать, как я могу вставить п элементы без запроса п раз?

Спасибо.

ответ

1
INSERT INTO `mytable` (`item`) VALUES ('value 1'), ('value 2'), ('value 3') 

Форма его с помощью

$t = array("value 1", "value 2", "value 3"); 

$query = "('"; 
$query .= implode("'), ('", $t); 
$query .= "')"; 

echo $query; 

Выходы ('value 1'), ('value 2'), ('value 3')

Теперь все, что вам нужно сделать, это вставить исходный запрос в этот вывод.

1

user187291's answer правильный, однако я бы не просто построил одну массивную строку запроса.

После того, как скажут 10 партий значений, я запустил вставку. Казалось бы, менее вероятно, что это произойдет неудачно, а затем отправит возможный огромный запрос в MySQL.

$query = ''; 

foreach($items as $key => $item) { 

    if ($key % 10) { 
     // Reset and insert 
    } 



}