繁体   English   中英

如何在Codeigniter中通过一个查询插入和更新现有数组数据?

[英]How to insert and update existing array data with one single query in Codeigniter ?

我有表中的所有数据在arrays 在其中我们updated existing dataadded new data一些added new data 此数据已从CSV导入并存储到array

问题是:

如何使用“ ON DUPLICATE KEY UPDATE ”在Codeigniter中通过单个查询插入和更新现有数据?

像这样的桌子

id(auto incre)   invoice_code    item_code   item_rate

1                INPO311018-1    pip640up    62
2                INPO311019-43   plxliupp    43
3                INPO311012-05   al6408f     24

在同一时刻插入和更新后的表将如下所示。

id(auto incre)   invoice_code    item_code   item_rate

1                INPO311018-1    pip640up    59.99
2                INPO311019-43   plxliupp    40
3                INPO311012-05   al6408f     25.99
4                INPO011019-3   Ndry_milk    1.4
5                INPO021012-05   al894_ad     99

调节器

  function import_csv()
          {
            $this->load->library('csvimport');  //Load Library

            $file_data=$this->csvimport->get_array($_FILES["csv_file"]["tmp_name"]);
            foreach ($file_data as $row) {

              $data[]=array(
                'id'=>$row['id'],
                'invoice_code'=>$row['invoice Code'],
                'item_code'=>$row['item Code'],
                'item_rate'=>$row['item Code'],

              );

            }

            $this->load->model('invoice_model');
            $this->invoice_model->insert_data($data);

          }

模型

  function insert_data($data)          //Add & Update table with "CSV"

        {
            $this->db->insert_batch('po_invoice',$data);
        }

**非常感谢,谁能解决这个问题:) **

这太疯狂了..也许吧..我没有正确理解它...但是尝试一下...

function import_csv()
          {
            $this->load->model('invoice_model'); /// load it at beginning 
            $this->load->library('csvimport');  //Load Library

            $file_data=$this->csvimport->get_array($_FILES["csv_file"]["tmp_name"]);
            foreach ($file_data as $row) {

              $data = array(
                'id'=>$row['id'],
                'invoice_code'=>$row['invoice Code'],
                'item_code'=>$row['item Code'],
                'item_rate'=>$row['item Code'],
              );
           // in order to insert or update ... you cannot use insert batch ....  
           // pass it one by one 
             $this->invoice_model->insert_update_data($data);

            }


           //  $this->invoice_model->insert_data($data);

          }

在模态...

 function insert_update_data($data)          //Add & Update table with "CSV"
    {

        $this->db->where('invoice_code',$data['invoice_code']);
        $this->db->where('item_code',$data['item_code']);
        $q = $this->db->get('po_invoice');
         if($q->num_rows() > 0){
          $this->db->where('invoice_code',$data['invoice_code']);
          $this->db->where('item_code',$data['item_code']);
          $this->db->update('po_invoice',$data);
         } else {
          $this->db->insert_batch('po_invoice',$data);
         }
   }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM