Php 如何在MySQL中获取最后4个插入的ID

Php 如何在MySQL中获取最后4个插入的ID,php,mysql,sql,Php,Mysql,Sql,我想从数据库表中获取最后4个插入的ID,基本上应该获取4个最新/最近添加的字段 我知道PHP中有一个lastInsertId函数,它获取最后一个 例如,如果我将最后一个插入的ID存储到如下变量中: $productID = $db->lastInsertId(); 但是,如何获得最后4个插入的ID,而不仅仅是最后一个 有没有快捷的方法 假设有一个ID,它是每个记录的主键 编辑 我的ID字段是自动递增的,因为我忘记了前面提到的最后插入的ID只有一个,并且是在每个进行插入的查询之后。因此,

我想从数据库表中获取最后4个插入的ID,基本上应该获取4个最新/最近添加的字段

我知道PHP中有一个lastInsertId函数,它获取最后一个

例如,如果我将最后一个插入的ID存储到如下变量中:

$productID = $db->lastInsertId(); 
但是,如何获得最后4个插入的ID,而不仅仅是最后一个

有没有快捷的方法

假设有一个ID,它是每个记录的主键

编辑

我的ID字段是自动递增的,因为我忘记了前面提到的

最后插入的ID只有一个,并且是在每个进行插入的查询之后。因此,lastInsertId返回该ID,并在插入后调用它

这意味着您必须在每个insert查询之后调用lastInsertId 4次,并将其结果存储在数组中

编辑:我知道最后4个ID可以用SELECT查询,但OP不是这样要求的。如果OP想要数据库中的最后4个ID,而不是插入的最后4个ID,则问题应以完全不同的方式形成。

根据IDFIELD desc limit 4从表顺序中选择任何字段

我只会把这里提到的一些注释带到这里

如果最近的INSERT或UPDATE语句设置了多个自动增量值,则最后的INSERT ID函数只返回第一个自动增量值。 LAST_INSERT_ID函数会逐个客户端返回最后一个自动增量值,因此它只会返回客户端的最后一个自动增量值。该值不受其他客户端的影响。 执行LAST_INSERT_ID函数不会影响LAST_INSERT_ID返回的值。 因此,为了检索最后4个插入的id,您必须检查正在执行的每个插入/更新的id

选择最后4行不是一个选项-考虑这一点: *人员A插入autoid为1的行 *人员B插入自动ID为2的行 *人员A插入autoid为3,4的行 *人员B插入自动ID为5的行 *人员A插入autoid为6的行

如果你是A个人,每次插入后检查最后插入的id,你将得到:1、3、4、6如果你是B个人,你将得到2、5 如果您是一个人,使用该查询进行选择,您将得到3,4,5,6

还有一个问题-如果您的行没有自动递增的ID,下面是我正在做的事情:

添加索引为char 32的列 在插入时,用一些唯一的数据填充该列; 插入后-选择该数据所在的行和列 现在不需要将行列更新为null
如果它是主键并设置为“自动增量”,则do select id from table order by id desc limit 4是否尝试使用SQL或我在此处遗漏了什么?@Jack否此脚本仅检索最后4个插入的id的另一个脚本一次插入一条记录使用自动时间戳。在此处提问时请小心添加完整的详细信息,如你上次编辑的节目没有这些信息,你可以看到那些试图帮助你的人投下的一塌糊涂的反对票——1对你来说哇,反对票投得很快。在我发布答案后不到一秒钟。干得好,堆栈溢出!对否决票的猜测:询问者正在使用PDO lastInsertId。但是,您的信息是正确的,因为每次成功插入后都必须调用lastInsertId。@RichardRodriguez否我在问题中清楚地说了“我要最后4个插入ID”s@user3574492:是的,这是我的观点。插入的最后4个不等于最后4个。您当前接受的答案返回最后4个。那是完全不同的事情。如果你马上声称你的列是自动递增的,你会消除这种情况的歧义。我还没有接受任何答案。。但是如果字段是AI,那么最后4个字段不总是最后插入的吗?我仍然想知道我的答案有什么问题。选择你想要的。。。动动脑筋你需要什么他为什么投了反对票?逻辑是好的,不知道这是怎么回事,但是现在开始到处都是傲慢的人,每个人都想要完整的代码……,给了你一个“放弃”的机会。这是不对的。OP从未说过ID是自动递增的,只是说它们是主ID。插入的最后4个ID不一定意味着它们是最高值。@LeventeNagy我当然同意你的上一句话,所以似乎形成了一个管辖权。。。我也投了一票