首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在mysql-php中检索所有最后插入的行in?

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

Stack Overflow用户
提问于 2013-04-10 15:12:44
回答 5查看 4.2K关注 0票数 6

有没有什么有效的方法可以使用php从mysql数据库中检索所有最后插入的行自动递增的Is?假设我不知道一批中有多少行要插入,但是在插入之后我需要它们的所有I。

在谷歌搜索之后,我没有找到任何有效的方法来做到这一点,所以我不确定这是可能的。我可以使用这个方法,但必须多次访问数据库才能检索I。

代码语言:javascript
复制
$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();
}

谢谢

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-04-10 15:20:37

您的代码几乎是完整的解决方案。

代码语言:javascript
复制
$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) or mysql_error();
   $ids[] = mysql_insert_id();
}

var_dump($ids);

如果问题是关于性能问题,那么另一个解决方案可能是

代码语言:javascript
复制
foreach ($data as $item) {
   $sql = "INSERT INTO `table`.`table` (`a`, `b`) VALUES ('{$item[0]}' ,'{$item[1]}');";
   mysql_query ($sql) or mysql_error();
}

$last_id = mysql_insert_id();
$total = count($data);
for($i = 0; $i <= $total; $i++){
    $ids[] = $total-$i;
}

这将防止多个sql查询。

票数 1
EN

Stack Overflow用户

发布于 2013-04-10 15:33:10

Mysql只返回最后插入的id,不幸的是没有办法(直接)检索所有的id。您将不得不使用变通方法,例如:

mysql

  • 计算插入的行和最后插入的ID,并计算rest backward.

  • Generate自定义id,而不是让增量创建它们,如果插入查询成功,则将id存储到一个数组中(通常,如果其中一个失败,整个查询也会失败)。

推荐使用第二种方法,因为对于n1,如果您正在执行稍微复杂的操作,例如使用INSERT blah blah ON DUPLICATE KEY,则修改将计入2次插入(不要问我为什么),而不是1次,并且您必须进行一些计算,以了解实际插入了多少次,以及修改了多少次。

顺便说一下,停止使用mysql_扩展,它已被弃用,请使用mysqli或pdo来代替

票数 1
EN

Stack Overflow用户

发布于 2013-04-10 15:17:12

如果你的auto_incremented字段是“正常的”,所以它的行为不是特别的,而是最后一个id加1,那么你可以在插入之前找到它的最大值,然后找到它的最高值的所有记录。

示例:

代码语言:javascript
复制
$sql = "SELECT id FROM table ORDER BY id DESC LIMIT 1";
    // get maximal value before insert

$sql = "SELECT id FROM table WHERE id > :last_id"; // get all new

但是这个解决方案并不是很专业。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15919289

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档