3

CodeIgniter のバッチ挿入を使用して、クエリの最後に挿入された ID を取得するにはどうすればよいですか。コードを使用しました$this->db->insert_id()が、最初に挿入した配列の 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に戻ります。

4

2 に答える 2

5

最適な方法は、パフォーマンスのためにループ内の個々の挿入の代わりにバッチ挿入を使用することだと思いますが、最後の挿入 ID を取得するには、最初の挿入 ID と影響を受ける行を追加します。

$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);
于 2013-12-17T08:09:08.320 に答える