【问题标题】:MySQL: Get AUTO_INCREAMENTED sequence number after Insert?MySQL:插入后获取自动增量序列号?
【发布时间】:2013-08-13 06:34:35
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

    试试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();
    

    【讨论】:

    • 我不明白你为什么说要使用 mysql_insert_id 然后继续说 ext/mysql 已弃用。只需为此推荐 PDOmysqli 函数即可。
    • @Mike 我建议他不要为将来的目的使用 mysql_* 函数。
    • 我没有看到他说他在使用 ext/mysql 的任何地方。
    • 这就是为什么我建议使用 mysqli_* 和 PDO...并在 mysqli_* 中也给出了解决方案
    • 谢谢高塔姆。它运行良好。我正在努力迁移到 MySQLI。
    【解决方案2】:

    使用这个

    SELECT LAST_INSERT_ID()
    

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

    【讨论】:

      【解决方案3】:

      MySQL Reference Manual 中有一个函数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)
      

      【讨论】:

      • OP 专门说“没有 SELECT”
      • 我认为他的意思是他不想使用 select 从表中获取最后一行。
      猜你喜欢
      • 2012-12-19
      • 1970-01-01
      • 1970-01-01
      • 2012-01-18
      • 1970-01-01
      • 2015-10-05
      • 1970-01-01
      • 1970-01-01
      • 2019-05-16
      相关资源
      最近更新 更多