MySQL:插入后获取AUTO_INCREAMENTED序列号?

时间:2013-08-13 06:34:35

标签: mysql auto-increment sql-insert mysql-insert-id

我将MySQL表与主键作为AUTO_INCREAMENTED(UNSIGNED INT)作为序列号。 每次我在此表中插入新行时,我都要向显示插入的AUTO_INCREAMENTED UNSIGNED INT的用户发出确认。

目前在插入行之后,我正在执行SELECT Query以获取最后插入的行。 在INSERT(没有SELECT)后立即有更聪明的方法来获取插入值吗?

3 个答案:

答案 0 :(得分:2)

使用此

SELECT LAST_INSERT_ID()

或PHP脚本中的mysqli_insert_id()。您也可以使用PDO代替mysqli

答案 1 :(得分:2)

尝试使用mysql_insert_id()

echo mysql_insert_id();

有关mysql_insert_id()

的详情,请参阅THIS

并且由于整个mysql_*扩展程序(提供名称前缀为ext/mysql PHP的所有函数)从mysql_*开始正式弃用,因此请尽量避免使用PHP v5.5.0语句。 将来删除

您可以更好地使用其他两个MySQL扩展程序:MySQLiPDO_MySQL,其中任何一个都可以用来代替ext/mysql

mysqli_*中,它就像

echo mysqli_insert_id();

答案 2 :(得分:1)

LAST_INSERT_ID()中有一个可用于此的函数MySQL Reference Manual

mysql> CREATE TABLE t1 (id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, name VARCHAR(32));
Query OK, 0 rows affected (0.08 sec)

mysql> INSERT INTO t1(name) VALUES ("John Doe");
Query OK, 1 row affected (0.24 sec)

mysql> SELECT * FROM t1;
+----+----------+
| id | name     |
+----+----------+
|  1 | John Doe |
+----+----------+
1 row in set (0.00 sec)

mysql> SELECT LAST_INSERT_ID();
+------------------+
| LAST_INSERT_ID() |
+------------------+
|                1 |
+------------------+
1 row in set (0.00 sec)