使用foreach插入查询

时间:2019-05-29 02:04:58

标签: codeigniter-3

我正在尝试生成一份声明表。为此,我尝试使用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);

        }

1 个答案:

答案 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新行。