30

How can I create a CI batch insert array which is like

$data = array(
   array(
      'title' => 'My title' ,
      'name' => 'My Name' ,
      'date' => 'My date'
   ),
   array(
      'title' => 'Another title' ,
      'name' => 'Another Name' ,
      'date' => 'Another date'
   )
);

from my normal array which is

Array
(
    [0] => Array
        (
            [track_id] => 
            [camp_id] => 1
            [field_name] => email_title
            [field_value] => sample
        )

    [1] => Array
        (
            [track_id] => 
            [camp_id] => 1
            [field_name] => email_date
            [field_value] => 2013-07-02
        )

    [2] => Array
        (
            [track_id] => 
            [camp_id] => 1
            [field_name] => email_template
            [field_value] => 2
        )
)
Happy Coder
  • 4,255
  • 13
  • 75
  • 152

4 Answers4

82

Try this:

$data = array(
   array(
      'title' => 'My title' ,
      'name' => 'My Name' ,
      'date' => 'My date'
   ),
   array(
      'title' => 'Another title' ,
      'name' => 'Another Name' ,
      'date' => 'Another date'
   )
);

$this->db->insert_batch('mytable', $data); 

For more information, read here

Erman Belegu
  • 4,074
  • 25
  • 39
5

This is your data At Controller

$dataForDb[0]['track_id']=$data['track_id'];
$dataForDb[0]['camp_id']=$data['camp_id'];
$dataForDb[0]['field_name']=$data['field_name'];
$dataForDb[0]['field_value']=$data['field_value'];

$dataForDb[1]['track_id']=$data['track_id'];
$dataForDb[1]['camp_id']=$data['camp_id'];
$dataForDb[1]['field_name']=$data['field_name'];
$dataForDb[1]['field_value']=$data['field_value'];

$dataForDb[2]['track_id']=$data['track_id'];
$dataForDb[2]['camp_id']=$data['camp_id'];
$dataForDb[2]['field_name']=$data['field_name'];
$dataForDb[2]['field_value']=$data['field_value'];

$fid=$this->model_modelName->functionName($dataForDb);

And insert data as batch insert At Model

$this->db->insert_batch($table, $data);
Dharman
  • 30,962
  • 25
  • 85
  • 135
Pullat Junaid
  • 3,224
  • 3
  • 25
  • 25
3

Your array is ok. Just put your array into a variable like

$data=array();//put your array

and then

 $this->db->insert_batch('yourTable', $data);

Please let me know if you face any problem.

ABorty
  • 2,512
  • 1
  • 13
  • 16
0

your normal array structure matchs with the array stucture of batch insert..

so just use batch insert query to insert the data.

 $this->db->insert_batch('yourTable', $data);  

$data is your normal array.

bipen
  • 36,319
  • 9
  • 49
  • 62