【问题标题】:Get the AUTO_INCREMENT value after inserting a new row插入新行后获取 AUTO_INCREMENT 值
【发布时间】:2013-09-21 10:10:22
【问题描述】:

如果idAUTO_INCREMENT控制,如何获取刚刚为当前用户插入的id

(我需要该 ID 用于其他用途)

注意:有些行可以删除,所以MAX(id) 不是一个选项。

例如:

插入第 2 行

插入第 3 行

已删除第 3 行

插入第 4 行,但 MAX(id) 返回 3..

非常感谢!

【问题讨论】:

  • 您已标记此问题php:您使用的是哪个API?

标签: php mysql sql row auto-increment


【解决方案1】:

使用 PDO:

$db->lastInsertId(); // $db is the PDO object

使用 MySQLi OOP:

$db->insert_id; // $db is the MySQLi object

使用 MySQLi 程序:

mysqli_insert_id($db); // $db is the connection variable

如果您使用的是旧的 MySQL API,请切换。

【讨论】:

  • 我不明白如何使用它.. mysql_insert_id 返回 int 并且它只是进入一个变量。但 mysqli_insert_id 返回混合,我不知道如何使用它..
  • 您使用的是新的 MySQLi API,还是旧的 MySQLi API?您可能正在使用后者,因为mysql_insert_id 返回一个整数(这是它应该的)。
  • 您应该知道旧的mysql_* API 自 PHP 5.5 起已被弃用,而且安全性较低。你真的应该升级到 MySQLi。
  • 是的,我使用mysql_insert_id,它可以工作。你能帮我把我的代码升级到mysqli吗?
  • 如果你喜欢@Marcel,让我们在聊天中这样做
【解决方案2】:

试试

选择@@identity

这应该返回标识列中的最后一个值

【讨论】:

    【解决方案3】:

    由于您的答案被标记为 PHP,我将在该上下文中回答。如果您使用的是 PDO API,则可以使用 PDO::lastInsertId。如果您使用的是 mysql 函数 API,则等效值为 mysqli_insert_idmysql_insert_id

    编辑:忍者:P

    【讨论】:

      【解决方案4】:

      使用 mysql_insert_id() 或 mysqli_insert_id()

      【讨论】:

      • 我不明白如何使用它.. mysql_insert_id 返回 int 并且它只是进入一个变量。但 mysqli_insert_id 返回混合,我不知道如何使用它..
      • 对于 mysqli_insert_id,您需要将连接变量传递给函数。像 mysqli_insert_id($con);你也可以使用 LAST_INSERT_ID() 来做同样的事情。
      【解决方案5】:

      你可以使用mysql_insert_id

      <?php
      $link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
      if (!$link) {
          die('Could not connect: ' . mysql_error());
      }
      mysql_select_db('mydb');
      
      mysql_query("INSERT INTO mytable (product) values ('kossu')");
      printf("Last inserted record has id %d\n", mysql_insert_id());
      ?>
      

      编辑:

      mysql_insert_id 已弃用。现在是mysqli_insert_id

      【讨论】:

      • mysql_* 已弃用。不要使用它。
      • 我不明白如何使用它。mysql_insert_id 返回 int 并且它只是进入一个变量。但是mysqli_insert_id 返回mixed 我不知道如何使用它..
      猜你喜欢
      • 2010-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-15
      • 2016-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多