2012-01-05 60 views
2

我有一個表employees,其中包含公司中僱員的詳細信息。如何爲php mysql驅動的數據庫生成下一個id號

每個人都分配了一個唯一的序列號。每當我們添加一個新員工時,它應該在添加表單中顯示一個序列號,這個數字比最後輸入的員工的序列號大一個數字。

例如,數據庫包含12名員工。最後一個條目的序列號是12。當我嘗試添加新員工時,應自動分配序列號13。所以我不需要輸入序列號。我怎樣才能做到這一點?

+0

您對員工序列號沒有使用auto_increment嗎?爲什麼不? – 2012-01-05 13:36:47

+0

我正在使用自動增量功能。我知道它會自動獲得一個系列號碼。但我的問題是如何在添加之前在「添加新員工表單」中顯示下一個(自動遞增的)值。 – user1010966 2012-01-05 13:41:47

+0

你想從表格中獲得下一個自動增量_id嗎? – 2012-01-05 13:57:30

回答

3

如果序列號被設置爲AUTO_INCREMENT你可以查找下一個AUTO_INCREMENT值事先使用:

$sql = "SHOW TABLE STATUS LIKE table_name"; 
$r = mysql_query($sql); 

$row = mysql_fetch_assoc($r); 
$next_increment = $row['Auto_increment']; 

其中table_name是您的表的名稱。

6

即使查詢當前數據庫狀態(除了正好有一個用戶正在使用應用程序),也無法準確預測下一個auto_increment ID。例如:打開表單,從數據庫中獲取下一個auto_increment ID,並顯示13作爲下一個預測值。與此同時,另一位用戶打開表單並將其保存得比您更快。其他用戶記錄的真實ID將爲13,您的14.

如果您確實想要在表單中顯示使用的ID,則需要對記錄進行某種分配(例如,創建一個空記錄打開表格並使用其ID)。有了某種狀態字段或必填字段,您可以過濾應用程序中的空記錄,直到它們完成並定期清除未完成的記錄。唯一的缺點是,如果用戶在沒有完成的情況下打開表單(例如14,15,18,20,...),它可能會給你不連續的ID。

相關問題