多行插入和返回id


Multi line insert and return ids

免责声明:我正在使用使用mysql函数而不是mysqli函数的旧代码。我不能用更新的功能来改造代码,必须在旧的、过时的功能中工作。我知道这不是最佳实践。

我们正在尝试使用多行INSERT,但随后需要为每个插入的行拔出mysql_insert_id()。这可能吗?

的例子:

INSERT INTO banner (date, count) VALUES ('2013-06-06', 1), ('2013-06-07', 1), ('2013-06-08', 2);

如何获取每一行的insert_id ?

我将使用事务并循环遍历您的数据:

--- DB SET AUTOCOMMIT TO FALSE ---
--- DB START TRANSACTION ---
--- LOOP BEGIN ---
    --- INSERT ONE ROW ---
    --- YOU CAN FETCH LAST_INSERT_ID HERE AND USE/STORE IT ---
--- LOOP END ---
--- DB END TRANSACTION (COMMIT) ---
--- DB SET AUTOCOMMIT BACK TO TRUE ---
(伪代码)

也许你可以用另一种方法来解决这个问题。

由于您将只获得最后插入行的ID,因此您可以根据插入的行数轻松获得所有ID(前提是使用AUTO_INCREMENT,从代码中可以看出是这样,并且您知道每次插入多少行)。你可以很容易地从最后一个ID中减去添加的项目的数量,你会得到你需要的ID范围。

范围从Last ID - rows added + 1Last ID

例如,如果你插入5行,你得到的ID是42,那么ID列表就是:38,39,40,41,42