PHP - 从扩展插入中检索自动递增的值

时间:2013-03-08 15:12:39

标签: php mysql insert-id

我正在使用$mysqli->insert_id在插入新行时从MySQL表中检索自动分配的主键。这适用于单个插入。这是一个简单的

案例
$result = $mysqli->query($query);
$NewPrimaryKey = $mysqli->insert_id;

但是,我已经(从这个网站实际上)了解到使用扩展插入更好地完成了多个插入:

insert into table (name1,name2,name3) values 
('blah1','blah2',blah3'), 
('blah1','blah2',blah3'), 
('blah1','blah2',blah3'))

这也很有效 - 除非我想知道哪些键是自动分配的。

PHP手册说:

  

在具有AUTO_INCREMENT字段的表上运行扩展插入时,   mysqli_insert_id()的值将等于 first 的值   插入行。

我的测试似乎证实了这一点。

注意:我不想只是第一个或只是最后一个。

我不想再恢复成千上万的单个插入,以便我可以单独获取auto_allocated密钥。

有没有人知道如何进行扩展插入并获取所有已分配的密钥(可能是在数组中)?

在进行扩展写入之前,我确实只是读取并保留了最新的现有密钥,然后计算分配密钥的预期值,但这看起来确实有点像。

2 个答案:

答案 0 :(得分:0)

我认为您不能获得所有新插入的行ID,但如果insert_id返回第一个 ID,您可以假设插入的ID是范围该ID对插入的数量(除非出现问题,应该是这种情况,但是整个插入应该失败,因为它是原子的)。您还可以选择所有大于或等于新insert_id的auto_increment ID。

答案 1 :(得分:-1)

你可以计算出钥匙吗,不是吗?

$keys=array();
for($id=mysqli_insert_id();$id<=$id+$totalRecords;$id++)
   $keys[]=$id;

或使用类似学说的ORM