2013-11-21 53 views
0

我需要一個系統,爲每個新用戶創建隨機密碼和用戶名。檢查隨機生成的用戶名是否唯一

因此,我需要確保用戶名是唯一的。

但我無法弄清楚爲什麼下面的代碼不工作。這不是一個語法問題。我無法弄清楚我邏輯上出錯的地方。

反正這裏是我曾嘗試:

$Password= randomPassword(); 
    $Username = randomPassword(); 
    $UsernameCheckQuery = mysql_query("SELECT * FROM users WHERE username = '".$Username."'"); 
    while (mysql_num_rows($UsernameCheckQuery) >= 1) { 
     $Username = randomPassword(); 
     $UsernameCheckQuery = mysql_query("SELECT * FROM users WHERE username = '".$Username."'"); 
     } 

我知道這個話題的別處出現堆棧溢出,並在網絡上。然而,我看到的每個問題都使用if語句來檢查用戶名是否已被使用。在我的情況下,我不能看到if聲明如何工作,因爲randomPassword函數可能會生成兩個已經存在於一行中的用戶名。

+2

一個你應該使用do while循環。 http://php.net/manual/en/control-structures.do.while.php –

+0

@ IgnacioVazquez-Abrams我不認爲這是。請看我的問題關於如果陳述 – jamesmstone

+0

@詹姆斯麥克唐納好主意 – jamesmstone

回答

1

嘗試

while (true) { 
    $Username = randomPassword(); 
    $UsernameCheckQuery = mysql_query("SELECT * FROM users WHERE username = '".$Username."'"); 
    if (mysql_num_rows($UsernameCheckQuery) < 1) { 
     break; 
    } 
} 
echo 'The generated username is '.$Username; 
+1

完美地工作,只是語法錯誤'break'和邏輯錯誤'<' – jamesmstone