Mr Hyde
Mr Hyde

Reputation: 3413

Codeigniter Inserting Multidimensional Array as rows in MySQL

Please Refer to this question I asked
Codeigniter Insert Multiple Rows in SQL

To restate

<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>
..........

Can Be Inserted into MySQL as this

 foreach($_POST['user'] as $user)
{
    $this->db->insert('mytable', $user);
}

This results in multiple MySQL queries. Is it possible to optimise it further, so that the insert occurs in one query

Something like this

insert multiple rows via a php array into mysql

but taking advantage of codeigniters simpler syntax. Thanks

Upvotes: 4

Views: 8563

Answers (4)

Mr Hyde
Mr Hyde

Reputation: 3413

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

Check the code igniter user guide for more details.

Upvotes: 4

Gene
Gene

Reputation: 19

In CI 2, there is a set_insert_batch() Active Record function.

Upvotes: 0

mos fetish
mos fetish

Reputation: 506

Codeigniter 2 (upcoming release) will have a batch insert method.

Upvotes: 0

Halil &#214;zg&#252;r
Halil &#214;zg&#252;r

Reputation: 15945

CodeIgniter does not seem to have a mutli-insert method. Moreover, even if it had, you may run into issues like:

  • Hitting the maximum query length cap
  • Having to lock the table until inserts are done
  • Dealing with errors can be a bit harder
  • ...

Upvotes: 0

Related Questions