【发布时间】:2013-11-23 13:23:50
【问题描述】:
我需要一个为每个新用户创建随机密码和用户名的系统。
因此,我需要确保用户名是唯一的。
但是我不知道为什么下面的代码不起作用。这不是语法问题。我只是无法从逻辑上弄清楚我哪里出错了。
无论如何,这是我尝试过的:
$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 函数可以生成两个已经连续存在的用户名。
【问题讨论】:
-
对于一个你可能应该使用 do while 循环的人。 php.net/manual/en/control-structures.do.while.php
-
@IgnacioVazquez-Abrams 我不这么认为。请看我关于 if 语句的问题
-
@JamesMcDonnell 好主意
-
完全是重复的。不要检查用户名是否已经存在,检查插入行的尝试是否失败。
-
我不认为这是一个骗局。如果 id 存在,OP 不想中止。他想继续努力直到成功。