2013-02-15 24 views
2

它是一個奇怪的問題。phpMyAdmin中的MySQL條目

我有一個正常的users表,第一列爲ID(PRIMARY,AUTO_INCREMENT)。 它工作正常。在檢查我的表單是否工作時,我插入了一些隨機數據(不是通過表格,而是通過表單本身)。然後我刪除了這些條目。現在,顯然沒有。的表格行數減少,但保留了ID值。所以表中的最後一個ID567而且沒有。的行是540。 (差距爲27

但是,今天我重新檢查了表中的條目,差距已增加到89。 (最後的ID是1809,行號是1720)。這怎麼可能?之後,當我爲其他用戶打開表單時,我從未刪除任何其他條目。

我的表USERS的結構:

ID-->PRIMARY,A_I 
EMAIL-->VARCHAR(60),UNIQUE 
NAME-->VARCHAR(60) 

用戶登記後,他/她通過郵件通知他/她ID所選擇的電子郵件ID。

在申請爲其他表單上的活動預留座位時,用戶必須輸入其小組成員的ID。我檢查在USERS表中輸入的ID,從那裏檢索結果並將其添加到另一個表,如EVENTS。 php代碼格式如下:

$members=array containing the IDs entered by the user of his/her team members. 
     $result_rows = mysql_query("SELECT * FROM users"); 
       $num_rows = mysql_num_rows($result_rows); 
       foreach($members as $key=>$value){ 
        if ($value>($num_rows+89)) 
        $err[]="Error. One of the ID you entered doesnot exist"; 
} 
      } 
+0

有沒有插入顯式ID的東西? – 2013-02-15 05:43:45

+0

@ExplosionPills:顯式ID?它是最正常的形式。您在表單中插入您的姓名,電子郵件,密碼。它們被添加到數據庫中。而已。並且'ID'被分配給每個用戶。沒有任何其他形式的數據庫以任何方式添加。 – xan 2013-02-15 05:46:12

回答

0

用戶如何從系統中刪除?

Auto_increment字段可以做到這一點 - 對於每個新行,它們都是+1。刪除無關緊要 - 它們只是相應增加。

因此,如果您添加John Doe,然後刪除該記錄並讀取它,則您的新ID爲2 - ID 1消失。然後你添加Jane Doe,刪除它,讀取它,新的Id是4,但是表中只有2條記錄。

你的情況

所以,當ID是567,89個用戶記錄有已被刪除去1809

Alernatively,這取決於你的表結構,另一個可能的選擇是INSERT忽略 - 如果你嘗試插入一個重複的用戶John Doe兩次例如,並且您有一個唯一鍵約束,該id將自動遞增,即使沒有新記錄將被添加。

最後一點 - 它真的不應該。讓數據庫處理該ID。如果你確實需要一個1,2,3等。方法,你需要建立你自己的。

+0

實際上,我有另一種形式:'register.php',用戶輸入他們的'ID',表單檢查它是否有效。所以我指望不。並放置如下條件:'if($ enteredID>($ rows + 27)) - > false'。 但時不時地,我必須改變這種狀況。最近,我將它編輯爲'if($ enteredID>($ rows + 89)) - > false'。我希望你能解決我的問題。 – xan 2013-02-15 06:03:39

+0

@xan - 用戶爲什麼要檢查他們的ID(號碼ID值)?讓DB處理該字段。 – sgeddes 2013-02-15 06:06:35

+0

其實這個表格是用於事件註冊的。我們已經分配了所有形式爲'XYZ '的用戶ID。所以,用戶只需輸入ID就能註冊他的團隊。所有的細節<名稱,電子郵件等>都會自動添加。 – xan 2013-02-15 06:11:12