Ошибка в получении последнего вставленного идентификатора запроса с использованием пакетной вставки в CodeIgniter

Как я могу получить последний вставленный идентификатор запроса, используя пакетную вставку в CodeIgniter. Я использовал код $this->db->insert_id() но он возвращает идентификатор моего первого вставленного массива. Я не могу получить последнюю вставку.

Вот что я сделал:

 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_batch('po_order', $orders); echo $this->db->insert_id(); //will return the first insert array 

Я не могу определить, где моя ошибка. Мой последний вариант – получить его с помощью запроса. Я также сделал mysql_insert_id() но всегда возвращается к 0.

Solutions Collecting From Web of "Ошибка в получении последнего вставленного идентификатора запроса с использованием пакетной вставки в CodeIgniter"

Вам нужно будет сделать что-то подобное,

 $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 

Я думаю, что лучшим способом было бы использовать пакетную вставку вместо отдельных вставок в цикле для производительности, но чтобы получить последний идентификатор вставки, добавьте первый идентификатор вставки и затронутые строки.

 $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);