如何在insert_bunch之后返回所有ID?功能:
public function insert_slike($id, $slike, $folder, $polje, $tabela)
{
$slike = explode(',', $slike);
$i = 1;
$data = array();
foreach ($slike as $slk) {
$this->img_upload_resize($slk, $folder);
$data[] = array(
$polje => $id,
'path' => $slk
);
$i++;
}
$this->db->insert_batch($tabela, $data);
}
答案 0 :(得分:13)
这是一种有效的方法:
由于您的记录包含结果ID,我将假设它们也会自动增加。
如果是这种情况,则执行此操作并仍使用insert_batch。
以下是您的工作:
1。您需要计算要插入的项目:
CustomTextField.swift
2. :运行批量插入:
<div style="border: 1px solid black;
width: 10px;
height: 10px;
display: inline-block;
margin-right: 4px;">
</div>
第3 即可。获取批次的第一个插入ID:
$count = count($data);
4. 将计数(减1)添加到您的插入ID以获取最后的记录ID。
$this->db->insert_batch($table, $data);
你去吧!您现在拥有插入记录的第一个和最后一个ID,以及其他所有内容。
注意:强>
有些人问过如果两个批次插入同时发生会发生什么; InnoDB将智能地管理新行的ID以防止数据相交,从而保持此方法有效。
答案 1 :(得分:3)
之前已经讨论过关于MySQL的这个主题:
How can I Insert many rows into a MySQL table and return the new IDs?
在CodeIgniter中,使用$this->db->insert_id()
将仅返回第一个插入的id。
如果我这样做,我会打开一个事务,并在每次插入时插入一个,在每次插入后存储id。
答案 2 :(得分:0)
1.创建自己的ID而不是自动生成的ID。
2.插入您已经处理过的身份
3.有一个插入ID的数组
4.返回插入ID的数组
答案 3 :(得分:0)
insert_batch()函数仅返回批处理的第一个id。 在for循环中使用insert()函数来获取所有id。
public function insert_slike($id, $slike, $folder, $polje, $tabela)
{
$slike = explode(',', $slike);
$data = array();
$ids = array();
foreach ($slike as $slk) {
$this->img_upload_resize($slk, $folder);
$data = array(
$polje => $id,
'path' => $slk
);
$this->db->insert($tabela, $data);
$ids[]=$this->db->insert_id();
}
}
答案 4 :(得分:-2)
我同意马克。 CI insert_batch只是使用foreach来完成每个插入,所以如果你使用事务来做这些事情。您将获得相同的效果或更好的效果,并且您也可以在插入后获得所有insert_id。