Множественная вставка MYSQL в codeigniter

Возможный дубликат:
вставить несколько строк через php-массив в mysql

Я знаю о возможности создания множественной вставки в mySQL, делая что-то вроде этого:

foreach ($array as $manuf) { $sql[] = '("'.mysql_real_escape_string($manuf['name']).'", "'.$manuf['lang'].'", "'.$mId.'")'; } $this->db->query('INSERT INTO manufacturers (name, lang ,mid) VALUES ' . implode(',', $sql) ); 

Интересно, есть ли лучший способ сделать это и, возможно, расширить текущую библиотеку БД (active-record), чтобы сделать ее еще меньше кода?

благодаря

Вам нужно четко указать, почему вы хотите вставить несколько строк в один оператор. Это для производительности?

Рамки предназначены для производительности и удобства программирования, но не обязательно для производительности. Я согласен с ответом @Udi Mosayev – используйте API-интерфейс инфраструктуры в его простейшем использовании.

Если вы вставляете небольшое количество строк, разница между вставкой одной строки из одного оператора и несколькими строками за оператор невелика.

Если у вас большое количество строк, и вам действительно нужно их вставлять с высокой производительностью, ничто не сравнится с LOAD DATA INFILE . Ваши попытки оптимизировать использование INSERT являются громоздкими и фунт-глупыми. Даже сбросив ваш PHP-массив в tmp-файл, а затем загружая его, LOAD DATA быстрее, чем с помощью INSERT .

Конечно. Просто используйте $this->db->insert('dbTableName', $arrayOfData) . Массив данных – это поле-> значение, а поле – это имя столбца в вашей таблице внутри БД.

вы можете прочитать об этом здесь

Если вы собираетесь вставить действительно большое количество строк, вы должны сделать это в одном запросе. Я не думаю, что CI делает все правильно. PS: Не забывайте о максимальном размере запроса mysql.