Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 多行插入和返回标识_Php_Mysql - Fatal编程技术网

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同意!我给出了一个建议,使用了我们从问题中得到的信息…是的,他们是对的,我不能保证没有多个用户插入。我想我得为这个案子稍微调整一下表格。谢谢