Intereting Posts
Как я могу разместить php-скрипт в сетевом веб-приложении dotnet, размещенном на Azure Отладка тайм-аута php-скрипта? Разделить строку PHP Как отобразить DOMElement? Как реализовать красноречивые события в laravel с использованием commmon Trait для всех моделей конвертировать PDF в изображение / flash / something в PHP Как проверить однострочное текстовое поле для нескольких значений? jQuery Несколько форм Отправить Как изменять значения отображаются в панели задач Phabricator в режиме рабочего процесса отставания Скрытые входные значения флажка не отправляются :( Форма PHP: невозможно изменить информацию заголовка – уже отправленные заголовки PHP: пользовательский обработчик ошибок – обработка синтаксических ошибок и фатальных ошибок WordPress добавляет отзывчивое изображение заголовка srcset для темы проблема с формированием числа в php и ajax Как обновить изображение на сервере через форму и отобразить его после отправки?

Как вы вставляете несколько записей в таблицу одновременно?

У меня есть две таблицы « Accommodation и Facility , которые связаны между собой во многих отношениях с третьим столом, « Accommodation_facility .

  • Проживание ( проживание , проживание, тип, название)
  • Объект ( объект_ид , объект_имя)
  • Размещение_facility ( accommodation_id , объект_id )

Используя Yii, как вы можете вставить несколько записей данных в таблицу Accomodation_facility ?

Вставка с использованием цикла происходит очень медленно. Допустим, у вас 5000 строк для вставки, это займет около 6 минут (отдельная вставка для каждой записи). Лучше вставить данные с помощью одного запроса:

 $values = '(null, "your string"), (null, "next string"), (null, "third string")'; $sql = 'INSERT INTO table_data (id, data) VALUES ' . $values; $command = Yii::app()->db->createCommand($sql); $command->execute(); 

Это займет 1/10 времени.

Вам лучше использовать bindParam для предотвращения инъекций SQL. Я не знаю, если это лучший способ сделать это, но есть способ, которым я это делаю:

 $values = array(array(1,2),array(3,4),array(5,6),); $nbValues = count($values); $sql = 'INSERT INTO table_name (col_name1, col_name2) VALUES '; for ($i=0; $i < $nbValues; $i++) { $sql .= '(:col1_'.$i.', :col2_'.$i.')'; if ($i !== ($nbValues-1)) $sql .= ','; } $command = Yii::app()->db->createCommand($sql); for ($i=0; $i < $nbValues; $i++) { $command->bindParam(':col1_'.$i, $values[$i][0], PDO::PARAM_INT); $command->bindParam(':col2_'.$i, $values[$i][1], PDO::PARAM_INT); } $command->execute(); 

Надеюсь это поможет !

 foreach($facilities as $facility) { $model = new Model; $model->attributes = $facility // or $model->column = $facility if ($model->validate()) $model->save() } 
 //only for 1.1.14 $builder = Yii::app()->db->schema->commandBuilder; $command=$builder->createMultipleInsertCommand('tbl_post', array( array('title' => 'record 1', 'text' => 'text1'), array('title' => 'record 2', 'text' => 'text2'), )); $command->execute(); 

http://www.yiiframework.com/news/72/yii-1-1-14-release-candidate-is-available/

Поскольку ваш вопрос помечен как «yii», я предполагаю, что вы используете Yii Framework. Взгляните на активные записи в документах – http://www.yiiframework.com/doc/guide/1.1/en/database.ar

Следуйте документам, чтобы настроить классы AR для своих таблиц, и просто перебирайте данные, которые вы публикуете, когда вы отправляете свой checkboxlist. В этом цикле вы создаете, заполняете и сохраняете AR-объекты для таблиц, для которых вы хотите вставить данные.