我目前正在使用$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() 的值将等于插入的第一 行的值。
我的测试似乎证实了这一点。
注意:我不想要第一个或最后一个。
我不想为了获得单独的 auto_allocated 键而不得不恢复到数千个单次插入。
有谁知道一种方法来进行扩展插入并取回所有分配的键(大概在一个数组中)?
我确实想到在进行扩展写入之前只读取并保留最新的现有密钥,然后计算分配密钥的预期值,但这似乎有点夸张。