1

私は自分でCIを学んでいるところですが、これが思い浮かびました。トランザクションとしてかどうかに関係なく、複数のINSERTを実行する場合、$this->db->insert_id()INSERTごとに一度に1つずつ実行するのではなく、それぞれの挿入IDを(適切な順序で)取得できますか?

例えば

-- Get ID of each
INSERT INTO table VALUES (insert1), (insert2), (insert3)

-- What if they're called separately
INSERT INTO table VALUES (insert1)
INSERT INTO table VALUES (insert2)
INSERT INTO table VALUES (insert3)

これらすべてからIDを配列として取得することはまだ可能ですか?

4

2 に答える 2

0

簡単です

コントローラ

$ids    =   array();

$data[0]    =   array(blah,blah);
$data[1]    =   array(blah,blah);
$data[2]    =   array(blah,blah);

for($i=0;$i<3;$i++)
{
    $ids[]  =   $this->my_model->insert($data[$i]);
}
echo '<pre>';
print_r($ids);

モデル

public function insert($data)
{
    $this->db->insert('table_name',$data);
    return $this->db->insert_id()
}
于 2013-01-29T07:01:06.883 に答える
0

私の知る限り、各挿入の間に挿入する必要があると思います。配列に格納するだけです。

var $insert_id = array();

public function insert()
{
INSERT INTO table VALUES (insert1)
$this->insert_id =$this->db->insert_id();

INSERT INTO table VALUES (insert2)
$this->insert_id =$this->db->insert_id();

INSERT INTO table VALUES (insert3)
$this->insert_id =$this->db->insert_id();
}

データベース レコードが挿入されるたびに、引き続き insert_id(); を使用できます。各挿入の後、それを配列に格納します。次に、それを返す関数を作成できます。

public function get_inserted_keys()
{
  return $insert_id;
}
于 2013-01-28T23:42:38.723 に答える