0

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

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

4

3 回答 3

2

用这个

SELECT LAST_INSERT_ID()

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

于 2013-08-13T06:35:59.270 回答
2

尝试mysql_insert_id()

echo mysql_insert_id();

有关更多信息,请参阅mysql_insert_id()

并且尽量避免mysql_*声明,因为整个ext/mysql PHP扩展提供了所有以前缀命名的函数mysql_*,从 开始正式弃用,PHP v5.5.0并将在未来删除

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

mysqli_*它会像

echo mysqli_insert_id();
于 2013-08-13T06:36:14.667 回答
1

MySQL 参考手册中有一个函数LAST_INSERT_ID()可用于此目的。

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)
于 2013-08-13T06:43:18.333 回答