Codeigniter Insert Multiple Rows in SQL

前端 未结 3 2167
闹比i
闹比i 2020-12-16 04:16

I am fresh to Codeigniter. I have a form which looks something like this.


<         


        
相关标签:
3条回答
  • 2020-12-16 04:35

    The form you show will create a $_POST array with indexes of name, address, age, and email. Each of these will contain the n number of "rows" your form provides. For example:

    array(
        'name' => array('First Name','Second Name'),
        'address' => array ('First Address','Second Address'),
        'age' => array('First Age','Second Age'),
        'email' => array('First Email', 'Second Email')
        );
    

    You may want to rearrange that array into one where each index of the array is a "person". This will make inserting the information into your database simpler.

    //subtract 1 from below to account for the assumed submit button
    $number_of_rows = count($_POST)-1;
    
    for($i=0;$i<$number_of_rows;$i++){
        $person[]['name'] = $this->input->post('Name')[$i];
        $person[]['address'] = $this->input->post('Address')[$i];
        $person[]['age'] = $this->input->post('Age')[$i];
        $person[]['email'] = $this->input->post('Email')[$i];
        }
    

    This will create something like this:

    array(
        0=>array('First Name','First Address','First Age','First Email'),
        1=>array ('Second Name','Second Address','Second Age','Second Email') 
        );
    

    Now you can use a loop to insert each person into the db.

    for($y=0;$y<count($person);$y++){
        $this->db->insert('mytable',$person[$y];
    }
    
    0 讨论(0)
  • 2020-12-16 04:42

    Multiple insert/ batch insert is now supported by codeigniter. It will firing one query rather than firing too many queries.

    $data =array();
    for($i=0; $i<$count; $i++) {
    $data[$i] = array(
               'name' => $name[$i], 
               'address' => $address[$i],
               'age' => $age[$i],
               'email' => $email[$i],
    
               );
    }
    
    $this->db->insert_batch('mytable', $data);
    
    0 讨论(0)
  • 2020-12-16 04:48

    Make your form like this:

    <tr>
        <td><input type="text" name="user[0][name]" value=""></td>
        <td><input type="text" name="user[0][address]" value=""><br></td>
        <td><input type="text" name="user[0][age]" value=""></td>
        <td><input type="text" name="user[0][email]" value=""></td>
    </tr>
    <tr>
        <td><input type="text" name="user[1][name]" value=""></td>
        <td><input type="text" name="user[1][address]" value=""><br></td>
        <td><input type="text" name="user[1][age]" value=""></td>
        <td><input type="text" name="user[1][email]" value=""></td>
    </tr>
    

    Then you can simply do:

    foreach($_POST['user'] as $user)
    {
        $this->db->insert('mytable', $user);
    }
    
    0 讨论(0)
提交回复
热议问题