![](/img/trans.png)
[英]how to insert data in two separate tables using single query in codeigniter?
[英]How to insert and update existing array data with one single query in Codeigniter ?
我有表中的所有数据在arrays
。 在其中我们updated existing data
并added 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.