PHP循环/返回

PHP循环/返回,php,mysql,Php,Mysql,假设我给了用户一个访问代码。我已经用php生成了代码,希望将此随机访问代码插入到数据库中,但是它必须是该用户独有的。因此,当我创建代码并检查数据库中是否已经存在该代码时,如果返回true(如中所示,它已经存在),我希望脚本“返回”或“循环”,直到它生成一个不存在的代码 我知道如何生成代码,以及如何插入mysql数据库。我的问题很简单,我该如何编写“循环”部分?您可以用break结束循环。所以循环,然后当变量为false时——意味着您有一个唯一的代码,用break停止循环 while { .

假设我给了用户一个访问代码。我已经用php生成了代码,希望将此随机访问代码插入到数据库中,但是它必须是该用户独有的。因此,当我创建代码并检查数据库中是否已经存在该代码时,如果返回true(如中所示,它已经存在),我希望脚本“返回”或“循环”,直到它生成一个不存在的代码


我知道如何生成代码,以及如何插入mysql数据库。我的问题很简单,我该如何编写“循环”部分?

您可以用break结束循环。所以循环,然后当变量为false时——意味着您有一个唯一的代码,用break停止循环

while {
   ...
   if ($variable === false) {
      break;
   }
}
甚至:

$variable = true;
while ($variable) {
   ...
   $variable =  isItInTheDatabase();
}

一旦$variable为
false
null
,或
0
,为什么不使用质量方法生成唯一的代码,而不是生成代码,并检查其是否已在数据库中

do {
$code = generate_a_random_string();
} while(mysql_num_rows(mysql_query("select * from table where code = '".mysql_real_escape_string($code)."'")))

// Insert the code
像这样做

hash($username)
因此,只要“用户名”是唯一的,代码也将是唯一的


附言:哈希,我刚才在代码中提到过,可以是任何哈希算法。Md5(不推荐)、Sha1或其他任何东西。

它非常简单,生成一个代码生成器无法重复的唯一代码,您可以使用时间戳和额外字符

也许您应该研究递归函数。你不能简单地让一个循环来做这个吗?而在数据库中是真的吗?为什么不立即生成唯一的代码呢?有很多方法可以做到这一点,而不是一直在再生,充其量只是浪费时间。所有这些都使用一个唯一的约束。