已插入数据库的最后一个ID

时间:2012-08-10 13:50:57

标签: php mysql

如果我可以获取最近插入的数据行的ID,我感兴趣。我有一个用户可以填写的表单,他们可以克隆表单,因此他们可以添加10个表单,如果他们想...我只需要插入所有的id。这可能吗?

6 个答案:

答案 0 :(得分:1)

您可以使用mysql_affected_rows mysql函数查找最后一个受影响的行。 Here是文档。

SET @uids := null;
UPDATE footable
   SET foo = 'bar'
 WHERE fooid > 5
   AND ( SELECT @uids := CONCAT_WS(',', fooid, @uids) );
SELECT @uids;

这将返回一个字符串,其中包含所有以冒号连接的ID。

答案 1 :(得分:0)

SELECT id FROM [yourTable] ORDER BY id DESC LIMIT 2

答案 2 :(得分:0)

答案 3 :(得分:0)

使用SQL的ORDER-BY

非常简单
SELECT * FROM table ORDER BY id DESC LIMIT 2 

答案 4 :(得分:0)

从简单的意义上说,这是不可能的;但如果需要这些ID,您可以更改逻辑以一次执行一次插入。

或者,您可以进行近似(具有取决于您的应用程序的合理性水平)但在插入之前选择MAX(id),然后执行select ... WHERE id > $prev_max AND name IN (implode(',', $names))(假设有一些字段,例如您可以这样使用的名称。

您可以通过确保计数与插入的行数相同来验证所选行的有效性。使用双因素(id> prev 类似于名称列),当你选择这样的时候,你几乎不可能得到别人的插入。

您还可以考虑将行归因于用户,这样可以消除任何数据冲突的可能性,然后该方法非常简单:

SELECT * FROM my_table WHERE user_id = $userID ORDER BY id DESC LIMIT $qtyForms;

当然,这样的决定取决于您的应用的结构。

答案 5 :(得分:0)

正如AndreiCristianProdan在评论中所述:自动增加ID。然后是:

SELECT * FROM tableName LIMIT 1 ORDER BY ID DESC

在-exactly-同一时间不会有两行。这将始终选择表中的-last-行。

如果您只想要由一个用户影响的行,请向表中添加user_id字段。然后添加

WHERE `user_id` = 'UserIdHere'

到SQL语句。

希望有所帮助。