Php - вставка нескольких строк в Ci - PullRequest
0 голосов
/ 30 октября 2018

У меня есть массив ['abc', 'xyz'];

Я хочу вставить две строки, но за один раз

Я не хочу

loop(){
 $this->db->insert()
 }

этот запрос будет запущен дважды

Использование CI Framework и этот массив исходит от пользователя

Ответы [ 4 ]

0 голосов
/ 30 октября 2018
$data = array(
        array(
                'title' => 'My title',
                'name' => 'My Name',
                'date' => 'My date'
        ),
        array(
                'title' => 'Another title',
                'name' => 'Another Name',
                'date' => 'Another date'
        )
);

$this->db->insert_batch('mytable', $data);

// Produces: INSERT INTO mytable (title, name, date) VALUES ('My title', 'My name', 'My date'),  ('Another title', 'Another name', 'Another date')

Referance :: вставка данных query_builder

0 голосов
/ 30 октября 2018

Сначала вам нужно будет создать свой пакетный запрос на вставку. После этого вызовите метод insert_batch.

$array = ['abc','xyz'];
$batchInsertArray = buildBatchInsertArray($array);

$this->db->insert_batch('myTable', $batchInsertArray);

function buildBatchInsertArray(array $array): array
{
    $batchInsertArray = [];

     foreach ($array as $item) {
       $batchInsertArray[] = [
           'columnName' => $item
       ];
    }

    return $batchInsertArray;
}
0 голосов
/ 30 октября 2018
foreach ($this->input->post("name") as $value) {        
            $name[] = array(
                'name'=>$value,
            );
        }
$this->db->insert_batch("names",$name);
0 голосов
/ 30 октября 2018

yourModel.php

public function urfunctionName($data)
{
  foreach($data as $res)
  {
     $this->db->insert('table_name',$res);
  }
}

Надеюсь, это сработает у вас

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...