Как использовать batch_insert в Code Igniter для вставки массива в 1 столбец PHP?

У меня есть эта функция,

public function storeVals($vals)
{
$vals = explode(",", $vals);

foreach ($vals as $val)
{
$val = array('input'=>$val);

$this->db->insert('input', $val);
}
}

Функция в основном получает строку, например: This, Is, An, Example

Затем он превращает строку в массив с «,» в качестве разделителя.

Затем он перебирает массив и вставляет данные в БД.

Code Igniter, я думаю, уже обладает функциональностью для этого.

File: system/database/drivers/mysql/mysql_driver.php

function _insert_batch($table, $keys, $values)
{
return "INSERT INTO ".$table." (".implode(', ', $keys).") VALUES    ".implode(', ', $values);
}

Будем весьма благодарны за любые идеи о том, как я могу использовать insert_batch () вместо зацикливания и вставки.

Спасибо.

0

Решение

В CodeIgniter, Вы можете использовать batch_insert как:

public function storeVals($vals)
{
$vals = explode(",", $vals);

$yourArr = array();
foreach ($vals as $val)
{
$yourArr[] = array('input'=>$val); // store values in array
}
$this->db->insert('tableName', $yourArr);
}

Вы также можете следовать примеру CI:

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

Пример ссылки

Руководство пользователя CI 3 (пакетная вставка)

1

Другие решения

Других решений пока нет …