相关疑难解决方法(0)

检索多行的最后插入的ID

当将数据插入到具有自动递增PK的表中时,我需要获取该密钥以用于另一个语句.正如许多问题在SO上所示,这可以在PHP中使用mysql_insert_id().

但是,我一直在将插入分组在一起,所以我一次插入多行.我这样做是因为我猜测可能存在一些性能问题,请告知我是否错了.无论如何,据我所知mysql_insert_id(),当我需要所有插入行的id时,只返回最后一个id.

我想在这种情况下我可以:

  1. 做一些简单的数学来计算所有使用的ID mysql_insert_id()和我输入的行数.但这保证是否始终正确?

  2. 使用多个insert语句,每行一个

  3. 之前生成我的ID,不使用自动增量.

我确信这一定是一个经典问题,所以我想知道最常见和最可行的方法是什么.

php mysql sql

23
推荐指数
2
解决办法
1万
查看次数

如何在mysql-php中检索所有最后插入的行ID?

有没有有效的方法使用PHP从mysql数据库中检索所有最后插入的行自动递增的ID?假设我不知道批量中要插入多少行,但插入后我需要所有ID.

谷歌搜索后我没有找到任何有效的方法来做到这一点,所以我不确定是否可能.我可以遵循这个,但必须多次命中数据库才能检索ID.

$data = array (
array(1,2),
array(3,4),
array(5,6)
);

$ids = array();

foreach ($data as $item) {
   $sql = 'insert into table (a,b) values ('.$item[0].','.$item[1].')';
   mysql_query ($sql);
   $ids[] = mysql_insert_id();
}
Run Code Online (Sandbox Code Playgroud)

谢谢

php mysql last-insert-id

5
推荐指数
1
解决办法
3830
查看次数

我可以从批量插入中检索lastInsertId吗?

INSERT INTO details (idactivity,user,hours,val,date) VALUES ('981','133','0','10500','2008-07-01'),('981','184','0','2750','2008-07-01'),('981','184','0','2750','2008-07-01')
Run Code Online (Sandbox Code Playgroud)

(iddetails如细节表PK)

有没有办法获得3个新的iddetails并让他们进入下一个批量插入查询?

INSERT INTO activity (idactivity,iddetails) VALUES('981',??),('981',??),('981',??)
Run Code Online (Sandbox Code Playgroud)

php mysql sql

4
推荐指数
1
解决办法
3445
查看次数

标签 统计

mysql ×3

php ×3

sql ×2

last-insert-id ×1