1

我正在为自己学习 CI 并且出现了这个问题。如果我运行多个 INSERT,无论是否作为事务,是否可以获取每个的插入 ID(以正确的顺序)而不是$this->db->insert_id()为每个 INSERT 一次运行一个?

例如

-- 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 回答