如何在PHP中获取MySQL表的最后插入ID?

gwe*_*weg 88 php mysql

我有一张表,经常插入新数据.我需要获取表格的最后一个ID.我怎样才能做到这一点?

它类似SELECT MAX(id) FROM table吗?

dec*_*eze 126

如果您正在使用PDO,请使用PDO::lastInsertId.

如果您使用的是Mysqli,请使用mysqli::$insert_id.

如果你还在使用Mysql:

请不要mysql_*在新代码中使用函数.它们不再维护,并且已被正式弃用.看到红色的盒子?了解准备好的语句,并使用 PDO MySQLi -本文将帮助您确定哪些.如果您选择PDO,这是一个很好的教程.

但如果必须,请使用mysql_insert_id.

  • mysql确保这是当前连接的最后一个ID,因此如果在插入查询之后立即放置此语句将不会有任何问题.不用担心其他进程在执行inserts.No需要在事务中包装它.mysql手册说:"生成的ID是基于每个连接在服务器中维护的.这意味着函数返回给定客户端的值是为影响AUTO_INCREMENT列的最新语句生成的第一个AUTO_INCREMENT值通过**那个客户**.这就是你不应该**使用select MAX(ID)的原因 (27认同)
  • 为了保证你永远不会得到一个错误的id,用[TRANSACTION](http://stackoverflow.com/questions/2708237/php-mysql-transactions-examples)包装你的代码. (7认同)

Rag*_*geZ 52

有一个函数可以知道当前连接中插入的最后一个id是什么

mysql_query('INSERT INTO FOO(a) VALUES(\'b\')');
$id = mysql_insert_id();
Run Code Online (Sandbox Code Playgroud)

加上使用max是一个坏主意,因为如果你的代码在两个不同的会话中同时使用,它可能会导致问题.

该函数名为mysql_insert_id

  • 在PHP> = 5.5版本中不推荐使用mysql _(...). (2认同)

x2.*_*x2. 22

没关系.你也可以使用LAST_INSERT_ID()


San*_*dhu 8

试试这个应该可以正常工作:

$link = mysqli_connect("localhost", "my_user", "my_password", "world");

$query = "INSERT blah blah blah...";
$result = mysqli_query($link, $query);

echo mysqli_insert_id($link);
Run Code Online (Sandbox Code Playgroud)


dla*_*lin 7

你写的内容会让你获得最大的id假设它们是唯一的并且自动递增,假设你可以选择并发问题就可以了.
由于您使用MySQL作为数据库,因此具有LAST_INSERT_ID()仅适用于执行插入的当前连接的特定功能.
PHP提供了一个特定的功能mysql_insert_id.