Search code examples
phparrayscodeigniterinsert

Codeigniter Insert Array to Database


I have created a form in Codeigniter with a phone number field that dynamically is duplicated using javascript. So basically I can have one or more fields like this.

<input name="phone[]" value=""type="text">
<input name="phone[]" value=""type="text">

Then in my controller I have

$form_data = array(
    'first_name' => $this->input->post('first_name'),
    'last_name' => $this->input->post('last_name'),
    'phone' => $this->input->post('phone[]')
    );

Then I am saving this to my dabase like so

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

but obviously the code for 'phone' is wrong, I just cant figure out how to properly do this.


Solution

  • you can't save array in to database. You can convert it in to string using implode() and whenever you needed then convert it back in array using explode(). Like below

    $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
            );
    

    OR

    You can convert it to json string and when you needed convert back to Array Like below:

    $phone = json_encode($this->input->post('phone'));
    

    Convert back to array

    $phone = json_decode($phone, TRUE);