我试图从输入字段的数组获取数据,并将其写入到数据库。 我从来没有与阵列工作过,但是这是我的代码。 它是基于什么关,如果它只是一个单一的输入值,我会做。 我知道这是错误的,但我不知道下一个尝试的东西。 有任何想法吗? 谢谢。
//view
<input type="text" name="assignments[]">
<input type="text" name="hours[]">
<input type="text" name="assignments[]">
<input type="text" name="hours[]">
<input type="text" name="assignments[]">
<input type="text" name="hours[]">
<input type="text" name="assignments[]">
<input type="text" name="hours[]">
<input type="text" name="assignments[]">
<input type="text" name="hours[]">
//controller
$assignments = $this->input->post('assignments', TRUE);
$hours = $this->input->post('hours', TRUE);
$this->load->model('create', 'create_model');
$this->create_model->create_projects($assignments, $hours);
//model
public function create_projects($assignments, $hours) {
$data = array(
'assignments' => $assignments,
'hours' => $hours,
);
$this->db->insert('projects', $data);
}
当然,你不能把一个PHP数组中的数据库是:
$data = array(
'assignments' => $assignments, // this is an array
'hours' => $hours, // so is this
);
$this->db->insert('projects', $data);
你需要数组的字符串表示,两个选项浮现在脑海中:
-
serialize()
-
json_encode()
我个人更喜欢json_encode,因为它不依赖于PHP读取,序列化是用于存储PHP对象有用的,但你并不需要在这里:
$data = array(
'assignments' => json_encode($assignments),
'hours' => json_encode($hours),
);
$this->db->insert('projects', $data);
确保你的数据库字段是TEXT
类型,以便它们能够存储可变长度的数据。 当你以后获取数据,你必须运行json_decode()
上的每个字段读它,把它放回一个数组,例如:
$result = $this->db->get('projects')->result();
foreach ($result as $record)
{
$assignments = json_decode($record->assignments);
// Now $assignments is an array
}
谢谢你的答案。 什么结束了工作最适合我的是这样的。
//controller
$assignments = $this->input->post('assignments');
$hours = $this->input->post('hours');
$this->load->model('create', 'create_model');
foreach($assignments as $key => $n){
$this->create_model->create_projects($n, $hours[$key]);
}
简单地使用json_encode()函数数组数据存储在数据库中
json_encode(array('key' => 'value'))
要么
json_encode($_P0ST['ARRAY'])
或CI中
json_encode($this->input->post('arraydata'));
在后: - $技能= $这个 - >输入 - >交的( '技能[]',TRUE);
'技能'=> json_encode($技能),
它解决了我的问题。