访问mysql中的最后一个插入行

时间:2012-09-26 11:18:58

标签: mysql sql insert

在我的数据库服务器上,我将数据插入一个自动增量字段为'id'的表中。现在我想在后续步骤中使用最后插入的'id'的值。我可以用这个: -

  select * from table_name order by id desc limit 1; 

但这里的问题是,它是一个服务器,可能会发生更多的插入,并且可能存在这样的情况:我尝试使用我提到的查询检索数据并获得不同的ID即。在我的插入和选择之间可能有一些其他插入,我不会得到我插入的值。可以解决这个问题的任何方式。?

提前致谢。

6 个答案:

答案 0 :(得分:7)

使用此

mysql_insert_id(&mysql);  

的基本结构是

mysql_insert_id ([ resource $link_identifier = NULL ] )

检索上一个查询(通常是INSERT)为AUTO_INCREMENT列生成的ID。

或在mysql中使用

   SELECT LAST_INSERT_ID();

这里是参考链接

http://dev.mysql.com/doc/refman/5.0/en/getting-unique-id.html

http://php.net/manual/en/function.mysql-insert-id.php

答案 1 :(得分:4)

使用此 mysql_insert_id()

它返回从先前的INSERT操作生成的AUTO_INCREMENT ID。

如果上一个操作没有生成AUTO_INCREMENT ID,则此函数返回0;如果MySQL连接失败,则返回FALSE。

答案 2 :(得分:3)

试试这个

SELECT LAST_INSERT_ID(colid) From tablename;

继承人Link

答案 3 :(得分:3)

在插入后立即调用LAST_INSERT_ID()函数并在某处保存id。

答案 4 :(得分:2)

如果您在插入后立即调用LAST_INSERT_ID()函数,则可以获取id,然后您可以使用它。

答案 5 :(得分:1)

对于任何最后插入的记录,将通过 mysql_insert_id() 如果您的表包含任何AUTO_INCREMENT列,它将返回该值。     

mysql_query("INSERT INTO test(emsg,etime) values ('inserted',now())");
printf("Last inserted record has id %d\n", mysql_insert_id());
$last_id=mysql_insert_id();
echo $last_id;
?>