Обновление 3: по обновленному вопросу (обновление 4)
При работе с var_dump
из $name_input
должен работать следующий код:
$name_input = $this->input->post('name');
$passport_number_input = $this->input->post('passport_number');
$data = array();
foreach ($name_input as $idx => $name) {
$data[] = array(
'name' => $name_input[$idx][0],
'passport_number' => $passport_number_input[$idx][0]
);
};
$this->db->insert_batch('customer_info', $data);
Это необходимо ещечтобы получить доступ к элементу [0], поскольку вход POST передается как array of arrays
Обновление 2: Проблема заключается в том, что POST возвращает данные в виде дополнительного массива, следующего кода MIGHTРабота.Мне потребуется var_dump
входов POST ($hi_input
..), чтобы дать точный код.
$hi_input = $this->input->post('hi');
$hello_input = $this->input->post('hello');
$how_input = $this->input->post('how');
$data = array();
foreach ($hi_input as $idx => $name) {
$data[] = array(
'hi' => $hi_input[$idx][0],
'hello' => $hello_input[$idx][0],
'how' => $how_input[$idx][0]
);
};
$this->db->insert_batch('table', $data);
Следующий код должен работать так, как я его тестировал (у меня не установлен CodeIgniter).Он не использует CodeIgniter для получения данных постов.
$hi_input = $_POST['hi'];
$hello_input = $_POST['hello'];
$how_input = $_POST['how'];
$data = array();
foreach ($hi_input as $idx => $name) {
$data[] = array(
'hi' => $hi_input[$idx][0],
'hello' => $hello_input[$idx][0],
'how' => $how_input[$idx][0]
);
};
$this->db->insert_batch('table', $data);
Обновление:
Вы также можете сделать это, используя $this->db->insert_batch();
, например:
$hi_input = $this->input->post('hi');
$hello_input = $this->input->post('hello');
$how_input = $this->input->post('how');
$data = array();
foreach ($hi_input as $idx => $name) {
$data[] = array(
'hi' => $hi_input[$idx],
'hello' => $hello_input[$idx],
'how' => $how_input[$idx]
);
};
$this->db->insert_batch('table', $data);
Старый ответ
В документации CodeIgniter по вставке - http://codeigniter.com/user_guide/database/active_record.html#insert
указано, что параметр $ data представляет собой ассоциативный массив с именами столбцов в качестве ключей и данными для вставки в качестве значений.
Так что вам нужно вызывать его один раз для каждой строки.Таким образом
Попробуйте это:
$hi_input = $this->input->post('hi');
$hello_input = $this->input->post('hello');
$how_input = $this->input->post('how');
foreach ($hi_input as $idx => $name) {
$data = array(
'hi' => $hi_input[$idx],
'hello' => $hello_input[$idx],
'how' => $how_input[$idx]
);
$this->db->insert('table', $data);
};