簡體   English   中英

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM