PHP循环/返回
假设我给了用户一个访问代码。我已经用php生成了代码,希望将此随机访问代码插入到数据库中,但是它必须是该用户独有的。因此,当我创建代码并检查数据库中是否已经存在该代码时,如果返回true(如中所示,它已经存在),我希望脚本“返回”或“循环”,直到它生成一个不存在的代码PHP循环/返回,php,mysql,Php,Mysql,假设我给了用户一个访问代码。我已经用php生成了代码,希望将此随机访问代码插入到数据库中,但是它必须是该用户独有的。因此,当我创建代码并检查数据库中是否已经存在该代码时,如果返回true(如中所示,它已经存在),我希望脚本“返回”或“循环”,直到它生成一个不存在的代码 我知道如何生成代码,以及如何插入mysql数据库。我的问题很简单,我该如何编写“循环”部分?您可以用break结束循环。所以循环,然后当变量为false时——意味着您有一个唯一的代码,用break停止循环 while { .
我知道如何生成代码,以及如何插入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或其他任何东西。它非常简单,生成一个代码生成器无法重复的唯一代码,您可以使用时间戳和额外字符 也许您应该研究递归函数。你不能简单地让一个循环来做这个吗?而在数据库中是真的吗?为什么不立即生成唯一的代码呢?有很多方法可以做到这一点,而不是一直在再生,充其量只是浪费时间。所有这些都使用一个唯一的约束。