检查随机生成的用户名是否唯一

时间:2013-11-21 03:51:36

标签: php mysql

我需要一个系统,为每个新用户创建随机密码和用户名。

因此,我需要确保用户名是唯一的。

但是我无法弄清楚为什么下面的代码不起作用。这不是语法问题。我只是无法弄清楚我在逻辑上出错的地方。

无论如何,这是我尝试过的:

    $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."'");
      }

我知道这个主题出现在Stack Overflow和网络上的其他地方。但是,我看到的每个问题都使用if语句来检查用户名是否已被使用。在我的情况下,我无法看到if语句如何工作,因为randomPassword函数可以生成两个已存在于行中的用户名。

1 个答案:

答案 0 :(得分: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;