多行插入和返回ID

时间:2013-06-07 16:44:44

标签: php mysql

免责声明:我正在使用使用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?

2 个答案:

答案 0 :(得分:1)

我会使用一个事务并循环遍历您的数据:

--- 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 ---

(伪代码)

答案 1 :(得分:0)

也许你可以对这个问题采取不同的方法。

由于您只获取最后插入的行的ID,因此您可以根据插入的行数轻松获取所有ID(假设您使用的是AUTO_INCREMENT,从您的代码看起来是这样,并且您知道每次插入多少行。您可以轻松地从最后一个ID中减去添加项目的数量,您将获得所需的ID范围。

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

例如,如果您插入5行并且ID为42,则ID列表将为:38,39,40,41,42。