PHP MySql Вставить n строк одновременно?

0

Как я могу оптимизировать этот код?

$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')");
}

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

Спасибо.

Теги:

3 ответа

4
Лучший ответ

вы можете использовать инструкции вставки mulitvalue

 insert into mytable(item) values('item1'),('item2') etc

http://dev.mysql.com/doc/refman/5.1/en/insert.html

1

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

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

$query = '';

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

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



}
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')

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню