Codeigniter将数组插入数据库

skr*_*ibe 2 arrays codeigniter insert

我在Codeigniter中创建了一个表单,其中包含一个使用javascript动态复制的电话号码字段.所以基本上我可以有一个或多个这样的字段.

<input name="phone[]" value=""type="text">
<input name="phone[]" value=""type="text">
Run Code Online (Sandbox Code Playgroud)

然后在我的控制器中我有

$form_data = array(
    'first_name' => $this->input->post('first_name'),
    'last_name' => $this->input->post('last_name'),
    'phone' => $this->input->post('phone[]')
    );
Run Code Online (Sandbox Code Playgroud)

然后我就这样把它保存到我的dabase中

function SaveForm($form_data)
{
    $this->db->insert('customers', $form_data);
    if ($this->db->affected_rows() == '1')
    {
        return TRUE;
    }
    return FALSE;
}
Run Code Online (Sandbox Code Playgroud)

但显然"手机"的代码是错误的,我只是想弄清楚如何正确地做到这一点.

Vin*_*nie 5

你无法将数组保存到数据库中.您可以将它转换为字符串使用,implode()并在需要时将其转换回使用数组explode().如下

$phone=implode(',',$this->input->post('phone'));
$form_data = array(
        'first_name' => $this->input->post('first_name'),
        'last_name' => $this->input->post('last_name'),
        'phone' => $phone
        );
Run Code Online (Sandbox Code Playgroud)

要么

你可以将它转换为json字符串,当你需要转换回数组时如下所示:

$phone = json_encode($this->input->post('phone'));
Run Code Online (Sandbox Code Playgroud)

转换回数组

$phone = json_decode($phone, TRUE);
Run Code Online (Sandbox Code Playgroud)