我试图从输入字段数组中获取数据并将它们写入数据库。我之前从未使用过数组,但这是我的代码。如果它只是一个输入值,它基于我会做的。我知道这是错的,但我不知道下一步该尝试什么。有任何想法吗?感谢。
//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);
}
答案 0 :(得分:3)
当然你不能把PHP数组放在数据库中:
$data = array(
'assignments' => $assignments, // this is an array
'hours' => $hours, // so is this
);
$this->db->insert('projects', $data);
你需要一个数组的字符串表示,我会想到两个选项:
我个人更喜欢json_encode,因为它不依赖于PHP来读取,serialize对于存储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
}
答案 1 :(得分:2)
谢谢你的回答。结果最适合我的是这个。
//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]);
}
答案 2 :(得分:0)
只需使用json_encode()函数将数组数据存储在数据库中
json_encode(array('key' => 'value'))
或强>
json_encode($_P0ST['ARRAY'])
OR IN CodeIgniter
json_encode($this->input->post('arraydata'));
答案 3 :(得分:-1)
在帖子中: - $ skills = $ this-&gt; input-&gt; post('skills []',TRUE);
'技能'=&gt; json_encode($ skills),
它解决了我的问题。