我正在尝试生成一份声明表。为此,我尝试使用foreach将数据插入Mysql。效果很好。但是,如果在数据库中发现任何重复的行,我会尝试对插入查询进行转义。我不想转义整个过程,但是如果找到重复的行,则应转义并继续下一个插入查询。
$gps = $this->Webmastermodel->acquireStatementDetail();
foreach($gps as $statement){
$insertdata = array(
'product_invoice_id' => $statement['InvoiceNo'],
'PUC' => $statement['productPUC'],
'productQTY' => $statement['productQty'],
'product_sub_total' => $statement['productSubTotal'],
'commissionGain_on_SubTotal' => $statement['commisionChargedOnProductSubTotal']
);
$this->db->insert('partner_business', $insertdata);
}
答案 0 :(得分:0)
如果我是我,我会使用insert_batch
:
$insertdata = array();
foreach($gps as $statement)
{
$insertdata[] = array(
'product_invoice_id' => $statement['InvoiceNo'],
'PUC' => $statement['productPUC'],
'productQTY' => $statement['productQty'],
'product_sub_total' => $statement['productSubTotal'],
'commissionGain_on_SubTotal' => $statement['commisionChargedOnProductSubTotal']
);
}
$this->db->insert_batch('partner_business', $insertdata);
但是由于您的问题是关于跳过是否已退出行,因此您可以修改查询并改用replace
:
$this->db->replace('partner_business', $insertdata);
请记住,所有有关在您的primary_key
数组中提供正确的$data
的信息,如果有和现有的ID,它将update
的数据,否则将insert
新行。