2013-11-21 2 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 문을 사용하여 사용자 이름이 이미 사용되었는지 확인합니다. 내 경우에는 randomPassword 함수가 이미 행에있는 두 개의 사용자 이름을 생성 할 수 있으므로 if 문이 어떻게 작동하는지 알 수 없습니다.

+2

을보십시오. http://php.net/manual/en/control-structures.do.while.php –

+0

@ IgnacioVazquez-Abrams 나는 생각하지 않는다. 진술에 관한 질문을 참조하십시오 – jamesmstone

+0

@JamesMcDonnell 좋은 생각 – 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

관련 문제