Error in getting the last inserted ID of a query using batch insert in CodeIgniter

前端 未结 2 1077
隐瞒了意图╮
隐瞒了意图╮ 2021-01-14 08:12

How can I get the last inserted ID of a query using the batch insert in CodeIgniter. I used the code $this->db->insert_id() but it returns the ID of my fi

相关标签:
2条回答
  • 2021-01-14 08:40

    You will need to do something like this,

    $insertIds  = array();
    for ($x = 0; $x < sizeof($filtername); $x++) {
        $orders = array(
            'poid'              => null,
            'order_id'          => $poid,
            'item_desc'         => $filtername[$x],
            'item_qty'          => $filterquantity[$x],
            'item_price'        => $filterprice[$x],
            'total'             => $filtertotal[$x],
            'cash_on_delivery'  => $val_delivery,
            'is_check'          => $val_check,
            'bank_transfer'     => $val_transfer,
            'transaction_date'  => $dateorder
        );
        $this->db->insert('po_order', $orders);
        $insertIds[$x]  = $this->db->insert_id(); //will return the first insert array
    }
    print_r($insertIds); //print all insert ids
    
    0 讨论(0)
  • 2021-01-14 08:43

    I think the best way would be to use the batch insert instead of individual inserts in a loop for performance , but to get the last insert id, ADD the First Insert ID & the Affected Rows.

    $this->db->insert_batch('po_order', $orders);
    $total_affected_rows = $this->db->affected_rows();
    $first_insert_id = $this->db->insert_id();
    
    $last_id = ($first_insert_id + $total_affected_rows - 1);
    
    0 讨论(0)
提交回复
热议问题