Php 多行插入和返回标识
免责声明:我使用的是使用Php 多行插入和返回标识,php,mysql,Php,Mysql,免责声明:我使用的是使用mysql函数而不是mysqli函数的旧代码。我不能用更新的功能来修改代码,必须在旧的、不推荐的功能中工作。我知道这不是最佳做法 我们正在尝试使用多行INSERT,但是需要为每个插入的行拉出mysql\u INSERT\u id()。这可能吗 例如: INSERT INTO banner (date, count) VALUES ('2013-06-06', 1), ('2013-06-07', 1), ('2013-06-08', 2); 然后如何获取每行的插入id?
mysql
函数而不是mysqli
函数的旧代码。我不能用更新的功能来修改代码,必须在旧的、不推荐的功能中工作。我知道这不是最佳做法
我们正在尝试使用多行INSERT
,但是需要为每个插入的行拉出mysql\u INSERT\u id()
。这可能吗
例如:
INSERT INTO banner (date, count) VALUES ('2013-06-06', 1), ('2013-06-07', 1), ('2013-06-08', 2);
然后如何获取每行的插入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-添加的行+1
到Last ID
例如,如果插入5行,ID为42,则ID列表将为:38、39、40、41、42。您不能,只能获取最后插入的ID。而且您在第一次约会时错过了一个报价。我认为您不能。编写一个查询,根据插入的数据(假设它们是唯一的)获取行的ID字段。您可以使用multiple语句进行插入,并在每个语句之后使用
mysql\u insert\u ID()
创建一个包含所有输入ID的数组供以后使用。这会很慢,但我看不到任何其他方法。也许你可以将值放入数组,在数组上迭代-每次迭代时插入一行-然后将mysql\u insert\u id()
保存到结果数组中。有一次我问了一个类似的问题(不是完全重复):如果多个用户同时插入,则不能保证这一点。确切地说,如果他对插入没有控制权,并且存在并发插入,则这将不起作用。@EvanMulawski同意!我给出了一个建议,使用了我们从问题中得到的信息…是的,他们是对的,我不能保证没有多个用户插入。我想我得为这个案子稍微调整一下表格。谢谢