CodeIgniter将多维数组作为单独的行插入到数据库表中

问题描述:

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)

将post值保存到数组。 p>

  $ data2 = 数组(
'invoice_id'=>($ id),
'order_id'=> $ this-> input-> post('order_id'),
'sensactionitems_servicetype'=> $ this-  >输入 - >发布('类型'),
'invoiceitems_quantity'=> $ this->输入 - >发布('数量'),
'invoiceitems_unitprice'=> $ this->  input-> post('rate'),
'nickmentitems_notes'=> $ this-> input-> post('description')
); 
 
 $ this-> db-&gt  ; insert('abc_invoiceitems',$ data2); 
 
print_r($ data2); 
  code>  pre> 
 
 

数组结构。 p>

 数组
(
 [invoice_id] => 21 
 [order_id] => 1 
 [invoiceitems_servicetype] =>数组
(
 [0] =>订单
 [  1] =>杂项
 [2] =>订单
)
 
 [invoiceitems_quantity] =>数组
(
 [0] => 5 
 [1] => 64  
 [2] => 88 
)
 
 [发票 items_unitprice] => 数组
(
 [0] => 5 
 [1] => 6 
 [2] => 8 
)
 
 [invoiceitems_notes] => 数组
(
 [0] => test Data1 
 [1] => test Data2 
 [2] => test Data3 
)
 
)
  code>   pre> 
 
 

将数组值插入数据库表。 p>

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

我收到以下错误并且 错误是: p>

值以数组形式返回。 p>

INSERT INTO abc_invoiceitems code>( invoice_id code>, order_id code>, invoiceitems_servicetype code>, invoiceitems_quantity code>, invoiceitems_unitprice code>, invoiceitems_notes code >)VALUES('21','1',数组,数组,数组,数组) p> blockquote> div>

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

How about turning the arrays into serialized strings?

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

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

When you want to pull the data back out of the database, you can unserialize the strings.