【问题标题】:How I get next auto-increment ID in mysql table?如何在 mysql 表中获取下一个自动增量 ID?
【发布时间】:2016-01-08 04:06:52
【问题描述】:

我需要从我的 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)

【问题讨论】:

  • 访问 INFORMATION_SCHEMA 是一个非常糟糕的主意。自动增量最好留给 db 来处理。如果您需要维护您的密钥,那么建议您使用其他字段。
  • 你没有充分的理由想要这个

标签: php mysql


【解决方案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

【讨论】:

  • 我们可以用mysqli准备好的语句修改这个查询吗?
  • @user3733831 立即查看
【解决方案2】:

您没有在查询中指定任何数据库名称。您可能在另一个数据库中有“产品”表。 如果您不使用“TRUNCATE”来清空您的表,则 auto_increment id 将保持与以前相同。不管你的表中没有数据。

执行此查询:

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

它将帮助您找出下一个 auto_increment id。

【讨论】:

    猜你喜欢
    • 2011-10-09
    • 2020-01-29
    • 1970-01-01
    • 2010-11-25
    • 2012-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多