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

Php 如何在mysql表中获得下一个自动增量ID?,php,mysql,Php,Mysql,我需要从mysql产品表中获取下一个自动增量ID 我就是这样尝试的: SELECT `auto_increment` FROM INFORMATION_SCHEMA.TABLES WHERE table_name = 'products'; 当这个查询运行时,我可以得到这样的输出 +----------------+ | auto_increment | +----------------+ | 10 | | 1 | |

我需要从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)
运行此查询

使用php

使用mysqli

$db=newmysqli('YOUR_HOST','db_USERNAME','db_PASSWORD','DATABASE');
如果($db->connect\u errno>0){
die('无法连接到数据库['.$db->connect_error.]');
}
$sql=fetch_assoc();
echo$row['Auto_increment'];

详细信息

查询中未指定任何数据库名称。您可能在另一个数据库中有“products”表。 如果不使用“TRUNCATE”清空表,则自动增量id与以前相同。不管您的表中没有数据

执行此查询:

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

它将帮助您找到下一个自动增量id。

访问信息模式是一个非常糟糕的主意。自动增量最好留给db来处理。如果您需要维护您的密钥,那么建议您使用其他字段。您没有理由希望这样做。我们可以使用mysqli prepared语句修改此查询吗?@user3733831立即检查
$result = mysql_query("
    SHOW TABLE STATUS LIKE 'products'
");
$data = mysql_fetch_assoc($result);
$next_increment = $data['Auto_increment'];
$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'];
SELECT AUTO_INCREMENT FROM information_schema.TABLES WHERE TABLE_SCHEMA = "databaseName" AND TABLE_NAME = "tableName"