Перейти к содержимому


insert - вставить за один запрос множество строк


Сообщений в теме: 6

#1 goodcolor

    Активный участник

  • Пользователи
  • PipPipPip
  • 206 сообщений
  • Пол:Мужчина
  • Город:Йошкар-Ола

Отправлено 18 Ноябрь 2016 - 02:11

Возможно ли вставить 1 запросом несколько строк?
Если да, где можно ознакомиться с описанием синтаксиса?
Компания "Хороший Цвет"
www.GoodColor.ru - поставки и производство самосветящихся товаров и материалов

#2 Dinak

    Активный участник

  • Пользователи
  • PipPipPip
  • 207 сообщений
  • Пол:Мужчина
  • Город:Новосибирск

Отправлено 18 Ноябрь 2016 - 06:47

Используйте как вариант многомерный массив типа:

$data = array(array(тут поля первой строки), array(тут поля второй строки) и т.д.);
data_insert(ID таблицы, $data);


#3 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 762 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 18 Ноябрь 2016 - 10:34

Просмотр сообщенияDinak (18 Ноябрь 2016 - 06:47) писал:

Используйте как вариант многомерный массив типа:

$data = array(array(тут поля первой строки), array(тут поля второй строки) и т.д.);
data_insert(ID таблицы, $data);

Мысль конечно интересная, но на данный момент такой синтаксис функция data_insert не поддерживает.

#4 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 762 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 18 Ноябрь 2016 - 10:41

Просмотр сообщенияgoodcolor (18 Ноябрь 2016 - 02:11) писал:

Возможно ли вставить 1 запросом несколько строк?
Если да, где можно ознакомиться с описанием синтаксиса?

http://www.mysql.ru/...man/INSERT.html

INSERT INTO tbl_name (col_name, ...) VALUES (expression, ...), (...), ...

т.е. только прямым запросом INSERT

#5 maksn

    Активный участник

  • Пользователи
  • PipPipPip
  • 314 сообщений
  • Пол:Мужчина

Отправлено 18 Ноябрь 2016 - 12:48

Просмотр сообщенияCbCoder (18 Ноябрь 2016 - 10:34) писал:

Мысль конечно интересная, но на данный момент такой синтаксис функция data_insert не поддерживает.
Ну а если вот так? На вскидку...
//Собственная функция
 
function data_bulk_insert($table_id,$insert_arr,$gen_event=false)
{
  $ret = array();
  foreach($insert_arr as $arr)
  {
    if(is_array($arr))
    {
      if($gen_event)
        $new_id = data_insert($table_id,EVENTS_ENABLE,$arr);
      else 
        $new_id = data_insert($table_id,$arr); 

      $ret[] = $new_id;
    } 
  }
  return $ret;
}

Но так конечно значительно быстрее

Просмотр сообщенияCbCoder (18 Ноябрь 2016 - 10:41) писал:

http://www.mysql.ru/...man/INSERT.html

INSERT INTO tbl_name (col_name, ...) VALUES (expression, ...), (...), ...

т.е. только прямым запросом INSERT

Сообщение отредактировал maksn: 18 Ноябрь 2016 - 13:13

"...Сижу, паяю. CRM починяю..."
Мои разработки

#6 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 762 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 18 Ноябрь 2016 - 15:31

Просмотр сообщенияmaksn (18 Ноябрь 2016 - 12:48) писал:

Ну а если вот так? На вскидку...

Так это уже не "одним запросом". Я так понимаю человеку производительность нужна, раз спрашивает.

#7 goodcolor

    Активный участник

  • Пользователи
  • PipPipPip
  • 206 сообщений
  • Пол:Мужчина
  • Город:Йошкар-Ола

Отправлено 18 Ноябрь 2016 - 17:12

Просмотр сообщенияCbCoder (18 Ноябрь 2016 - 15:31) писал:

Так это уже не "одним запросом". Я так понимаю человеку производительность нужна, раз спрашивает.

Да, так и есть. Ради оптимизации.
Компания "Хороший Цвет"
www.GoodColor.ru - поставки и производство самосветящихся товаров и материалов





Количество пользователей, читающих эту тему: 5

0 пользователей, 5 гостей, 0 анонимных