12

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

  select * from table_name order by id desc limit 1; 

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

提前致谢。

4

6 回答 6

9

用这个

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

于 2012-09-26T11:23:53.307 回答
4

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

于 2012-09-26T11:28:53.287 回答
4

使用这个mysql_insert_id()

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

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

于 2012-09-26T11:32:38.500 回答
4

尝试这个

SELECT LAST_INSERT_ID(colid) From tablename;

这是链接

于 2012-09-26T11:25:48.550 回答
2

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

于 2012-10-24T05:51:31.440 回答
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;
?>
于 2015-04-12T06:00:16.347 回答