笨 - 写输入数组到数据库(CodeIgniter - Writing input array to

2019-09-24 06:08发布

我试图从输入字段的数组获取数据,并将其写入到数据库。 我从来没有与阵列工作过,但是这是我的代码。 它是基于什么关,如果它只是一个单一的输入值,我会做。 我知道这是错误的,但我不知道下一个尝试的东西。 有任何想法吗? 谢谢。

//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);
}

Answer 1:

当然,你不能把一个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
}


Answer 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]);
}


Answer 3:

简单地使用json_encode()函数数组数据存储在数据库中

json_encode(array('key' => 'value'))

要么

json_encode($_P0ST['ARRAY'])

或CI中

json_encode($this->input->post('arraydata'));


Answer 4:

在后: - $技能= $这个 - >输入 - >交的( '技能[]',TRUE);

'技能'=> json_encode($技能),

它解决了我的问题。



文章来源: CodeIgniter - Writing input array to database