![](/img/trans.png)
[英]How to get the auto-incremented ID for a row once you insert values using php?
[英]PHP – retrieving auto-incremented values from extended inserts
我當前正在使用$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鍵。
有誰知道做擴展插入並取回所有分配的鍵的方法(大概在數組中)?
我確實想過在擴展寫入之前先讀取並保留最新的現有密鑰,然后計算分配的密鑰的期望值,但這似乎有些奇怪。
我認為您無法獲得所有新插入的行ID,但是如果insert_id
返回第一個 ID,則可以假定插入的ID是該ID到插入次數的范圍(應該是這種情況)除非出現問題,否則整個插入操作都會失敗,因為它是原子的。 您還可以選擇所有大於或等於新的insert_id
的auto_increment ID。
您可以計算密鑰,不是嗎?
$keys=array();
for($id=mysqli_insert_id();$id<=$id+$totalRecords;$id++)
$keys[]=$id;
或使用ORM之類的學說
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.