我的PHP代码在注册用户时生成随机银行帐号。
当$wszystko_ok == true
时,让他注册。
此代码检查生成的数字是否已存在于数据库中。如果存在,请设置$wszystko_ok = false
并且它不同意帐户注册。
在这种情况下如何让它再次生成一个随机数?
$wszystko_ok == true
$r_nrkonta = rand(1000000000, 9999999999);
$rezultat2 = $polaczenie->query("SELECT nrkonta FROM kontabankowe WHERE nrkonta='$r_nrkonta'");
if (!$rezultat2)
throw new Exception($polaczenie->error);
$ile_takich_nrkonta = $rezultat2->num_rows;
if ($ile_takich_nrkonta > 0)
{
$wszystko_ok = false;
}
答案 0 :(得分:0)
您需要使用do-while循环:
do {
$wszystko_ok = true;
$r_nrkonta = rand(1000000000, 9999999999);
$rezultat2 = $polaczenie->query("SELECT nrkonta FROM kontabankowe WHERE nrkonta='$r_nrkonta'");
if (!$rezultat2)
throw new Exception($polaczenie->error);
$ile_takich_nrkonta = $rezultat2->num_rows;
if ($ile_takich_nrkonta > 0)
{
$wszystko_ok = false;
}
} while ($wszystko_ok == false);
我只是猜测你变量的含义,但我认为你明白了。
答案 1 :(得分:0)
为简单起见,这里将in_array调用替换为SQL SELECT。
<?php
$acs =
[
'1',
'2',
'3'
];
$limit = 10;
$tries = 0;
while(true)
{
$tries++;
if($tries >= $limit)
throw new Exception('New AC number generation attempts exceeded.');
$new_ac = rand(1,10);
if(!in_array($new_ac, $acs))
break;
}
var_dump($new_ac, $tries);