Avin Varghese Avin Varghese - 3 months ago 34
MySQL Question

CodeIgniter insert multidimensional array to database table as separate rows

saving post value to an array.

$data2 = array(
'invoice_id' =>($id),
'order_id' => $this->input->post('order_id'),
'invoiceitems_servicetype' =>$this->input->post('type'),
'invoiceitems_quantity' => $this->input->post('quantity'),
'invoiceitems_unitprice' => $this->input->post('rate'),
'invoiceitems_notes' => $this->input->post('description')
);

$this->db->insert('abc_invoiceitems', $data2);

print_r($data2);


Array Structure.

Array
(
[invoice_id] => 21
[order_id] => 1
[invoiceitems_servicetype] => Array
(
[0] => Order
[1] => Miscellaneous
[2] => Order
)

[invoiceitems_quantity] => Array
(
[0] => 5
[1] => 64
[2] => 88
)

[invoiceitems_unitprice] => Array
(
[0] => 5
[1] => 6
[2] => 8
)

[invoiceitems_notes] => Array
(
[0] => test Data1
[1] => test Data2
[2] => test Data3
)

)


Insert array values to database table.

TABLE NAME --- abc_invoiceitems
+------------+----------+--------------------------+-----------------------+------------------------+--------------------+
| invoice_id | order_id | invoiceitems_servicetype | invoiceitems_quantity | invoiceitems_unitprice | invoiceitems_notes |
+------------+----------+--------------------------+-----------------------+------------------------+--------------------+


I got this following error and the error is :

the values are returning as array.


INSERT INTO
abc_invoiceitems
(
invoice_id
,
order_id
,
invoiceitems_servicetype
,
invoiceitems_quantity
,
invoiceitems_unitprice
,
invoiceitems_notes
) VALUES ('21', '1', Array, Array, Array, Array)

Answer

Fetch post values:

$temp =count($this->input->post('type'));//counting number of row's
$type= $this->input->post('type');
$quantity = $this->input->post('quantity');
$rate = $this->input->post('rate');
$description = $this->input->post('description');

Loop through Key values:

for($i=0; $i<$temp;$i++){
  $data2 = array(
  'invoice_id' =>($id),
  'order_id' => $this->input->post('order_id'),
  'invoiceitems_servicetype' =>$type[$i],
  'invoiceitems_quantity' => $quantity[$i],
  'invoiceitems_unitprice' => $rate[$i],
  'invoiceitems_notes' => $description[$i]
      );
   $this->db->insert('abc_invoiceitems', $data2);
  }
Comments