我如何在mysql表中获得下一个自动增量ID?

时间:2015-10-10 07:05:23

标签: php mysql

我需要从我的mysql产品表中获取下一个自动增量ID。

这是我尝试的方式:

SELECT `auto_increment` 
FROM INFORMATION_SCHEMA.TABLES
WHERE table_name = 'products';

当这个查询运行时,我可以得到这样的输出。

+----------------+
| auto_increment |
+----------------+
|             10 |
|              1 |
|             14 |
+----------------+
3 rows in set (0.02 sec)

有人可以告诉我为什么它会显示3个值。 (3行)

注意:我的产品表仍然是空的。

mysql> select * from products;
Empty set (0.00 sec)

2 个答案:

答案 0 :(得分:2)

您没有在查询中指定任何数据库名称。您可能拥有'产品'表在另一个数据库中。 如果你不使用' TRUNCATE'为了清空你的表,auto_increment id与以前一样。无论你在表中都没有数据。

执行此查询:

SELECT AUTO_INCREMENT FROM information_schema.TABLES WHERE TABLE_SCHEMA = "databaseName" AND TABLE_NAME = "tableName"

它可以帮助您找到下一个auto_increment id。

答案 1 :(得分:1)

  

运行此查询

SHOW TABLE STATUS LIKE 'products'
  

使用php

$result = mysql_query("
    SHOW TABLE STATUS LIKE 'products'
");
$data = mysql_fetch_assoc($result);
$next_increment = $data['Auto_increment'];
  

使用mysqli

$db = new mysqli('YOUR_HOST', 'DB_USERNAME', 'DB_PASSWORD', 'DATABASE');

if($db->connect_errno > 0){
    die('Unable to connect to database [' . $db->connect_error . ']');
}

$sql = <<<SQL
SHOW TABLE STATUS LIKE 'products'
SQL;

if(!$result = $db->query($sql)){
    die('There was an error running the query [' . $db->error . ']');
}

$row = $result->fetch_assoc();

echo $row['Auto_increment'];

详情https://stackoverflow.com/a/1372115