PHP数组输入到数据库

时间:2016-08-11 03:06:29

标签: php arrays

我将此数组从我的角度传递给PHP

0 => 
array (size=10)
  'id' => string '3' (length=1)
  'vendor' => 
    array (size=1)
      'selected' => 
        array (size=2)
          'vendor' => 'A'
          'id' => '5'
1 => 
array (size=10)
  'id' => string '4' (length=1)
  'vendor' => 
    array (size=1)
      'selected' => 
        array (size=2)
          'vendor' => 'B'
          'id' => '7'
2 => 
array (size=10)
  'id' => string '5' (length=1)
  'vendor' => 
    array (size=1)
      'selected' => 
        array (size=2)
          'vendor' => 'B'
          'id' => '7' 

我想要做的是根据vendor_id对数组数据进行排序,然后将其插入到我的数据库中。因此,通过给定上述数据,供应商A具有1个项目,供应商B具有2个项目

浏览互联网很长一段时间后,我发现我可以使用以下代码

 if(count($products) > 0){
      foreach($products as $data){
          $input[$data['vendor']['selected']['id']][] = $data;
      }
 }

并且新创建的输入数组将类似于

5 => 
array (size=1)
  0 => 
    array (size=10)
      'id' => string '3' (length=1)
      'vendor' => 
        array (size=1)
          ...
7 => 
array (size=2)
  0 => 
    array (size=10)
      'id' => string '4' (length=1)
      'vendor' => 
        array (size=1)
          ...
  1 => 
    array (size=10)
      'id' => string '5' (length=1)
      'vendor' => 
        array (size=1)
          ...

然后我循环输入数组,这样我就可以将数据插入到我的db

    //Sample data
    $i = 0;
    foreach($input as $d){
        $param = array(
            "po_number"     => $purchase_number
            "grand_total"   => $d[$i]['total_price']
        );
        $this->_model->add($param); // add into the purchase order table
        $insert_id = $this->db->insert_id();

        $products_array[] = array(
           "purchase_order_id" => $insert_id,            
        );

        foreach($products_array as $prod){
            $this->_detail_model->add($prod); // add into the purchase order detail table
        }
    }

但是,我发现上面的代码无法正常工作。通过给出上面的数组示例,Vendor with 1 item,将被插入到db两次,而有2个item的vendor将只插入一次。我不知道出了什么问题,但我觉得foreach $ input数组以某种方式循环,缺少某些东西。有人可以帮我做什么吗?

基本上我想做一个采购订单和采购订单明细。通过上面的示例,将有2个采购订单,1个采购订单和1个采购订单明细,以及1个采购订单和2个采购订单详细信息

谢谢:)

0 个答案:

没有答案