0

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

4

2 回答 2

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

(伪代码)

于 2013-06-07T16:53:39.650 回答
0

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

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

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

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

于 2013-06-07T17:02:17.113 回答