我希望在数据库的行中插入值,因为每个值都放在数据库的新行中。
我不希望使用serialize(json_encode等)从数据库中插入所有值。
例如:(在这个例子中,我想要三次插入数据(值),因为我有3个值不同) 更新4:
这是我的价值:
<input name="name[0][]" value="11">
<input name="passport_number[0][]" value="11">
<input name="name[1][]" value="22">
<input name="passport_number[1][]" value="22">
我这样做,但没效果:
$name_input = $this->input->post('name');
$passport_number_input = $this->input->post('passport_number');
//$term_passport_input = $this->input->post('term_passport');
//$date_of_birth_input = $this->input->post('date_of_birth');
//$age_input = $this->input->post('age');
//$national_number_input = $this->input->post('national_number');
//$mobile_input = $this->input->post('mobile');
//$address_input = $this->input->post('address');
$data = array();
foreach ($name_input as $idx => $name) {
$data[] = array(
'name' => $name_input[0]
'passport_number' => $passport_number_input[0],
//'term_passport' => $term_passport_input[$idx],
//'date_of_birth' => $date_of_birth_input[$idx],
//'age' => $age_input[$idx],
//'national_number' => $national_number_input[$idx],
//'mobile' => $mobile_input[$idx],
//'address' => $address_input[$idx],
);
};
var_dump($name_input);
$this->db->insert_batch('customer_info', $data);
这是var_dump
输出'$ name_input':
array(2) {
[0] = > array(1) {
[0] = > string(2)"11"
}[1] = > array(1) {
[0] = > string(2)"22"
}
}
我收到此错误:
遇到PHP错误
严重性:警告
消息:不能 修改标题信息 - 已经发送的标题(输出开始于 d:\ XAMPP \ htdocs中\应用\控制器\管理员\ tour_foreign.php:405)
文件名:core / Common.php
行号:413
数据库 发生错误
错误编号:1054
'字段中的未知列'0' 列表'
INSERT INTOcustomer_info
(0
)VALUES('22')
文件名:D:\ xampp \ htdocs \ system \ database \ DB_driver.php
行 编号:330
答案 0 :(得分:0)
更新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);
当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);
};