2015-10-10 90 views
2

我需要從我的mysql產品表中獲取下一個自動遞增ID。如何在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) 
+1

訪問INFORMATION_SCHEMA是一個非常糟糕的主意。自動增量最好留給數據庫來處理。如果您需要維護您的密鑰,那麼使用其他字段將是明智的。 – jeff

+0

沒有很好的理由爲什麼你想要這個 – Strawberry

回答

2

運行此查詢

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

+0

我們可以用mysqli預處理語句修改這個查詢嗎? – user3733831

+0

@ user3733831立即檢查 –

1

在您查詢您沒有指定任何數據庫名稱。你可能在另一個數據庫中有'產品'表。 如果您不使用'TRUNCATE'來清空表格,那麼auto_increment id將保持與之前相同。無論你在桌上沒有數據。

執行這個查詢:

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

它會幫助你找出下一個AUTO_INCREMENT ID。

相關問題