2013-05-27 74 views
0

我正在使用php的登錄模塊,並面臨生成ID的問題。生成新ID:獲取實際ID

在註冊部分,我需要爲每個用戶生成一個唯一的ID。我認爲我可以通過將數據庫中的最後一個ID增加1來生成此ID,但似乎不起作用。

這裏是我的代碼:

$user = $_POST['post_username']; 
    $pass = $_POST['post_password']; 

    function generateID(){ 

    $aux = mysql_query("SELECT usr_id FROM users"); 

    $i = 0; 

    $resulArray = mysql_fetch_row($aux) or die("Error fetching!"); 
    $n = mysql_num_rows($aux); 

    $b = $resulArray[$i]; 
    $c = $b; 
    for($i = 0; $i < $n; $i = $i +1){ 
     $b = $resulArray[$i]; 
     if($b >= $c) $c = $b; 
    } 

    return $c + 1;} 

這裏是我的MySQL結構:

username -> String 
password -> String 
usr_id -> int 

回答

5

不要這樣做。這是不可靠的,不能解決競爭條件。只需使用一個自動增加的主鍵:

CREATE TABLE users 
    id unsigned int auto_increment primary key, 
    ... 
); 

然後

INSERT INTO users (id, ....) VALUES (null, ...) 

$userID = mysql_last_insert_id(); 

這本質上是可靠的,處理競爭條件,並保證唯一的ID此表。您不需要任何自定義驗證,只需自動遞增id字段並讓MySQL處理ID。

+0

它的工作原理。謝謝你的時間! – Akryllax