我不明白为什么我的代码无效。连接工作和其他一切但是当我尝试生成一个唯一的随机数并从MySQL检查数字是否存在它仍然打印出一个随机数,但它不是唯一的。 thx可以帮助我吗? 这是我的代码:
$num = rand(1,5);
$sel_query = "SELECT * FROM test";
$result2 = $con->query($sel_query);
$i = 1;
for (;$i<2; $i++)
{
while($row = mysqli_fetch_array($result2))
{
if ($row['id'] == $num)
{
$num = rand(1,5);
$i = 0;
}
}
}
答案 0 :(得分:1)
这应该有效:
$is_unique = false;
$num = false;
while (!$is_unique){
$num = rand(1,5);
$sel_query = "SELECT id from test where id = " . $num;
$result2 = $con->query($sel_query) or die($conn->error);
if (!mysqli_fetch_array($result2)){
$is_unique = true;
}
}
echo "Unique number is " . $num;
但如果没有更多可能的唯一数字,它将永远循环。
答案 1 :(得分:0)
我知道这有点旧,但在需要类似的答案之后我发现了这个问题。我已经采取了Jodes的答案并稍微更新了它,因此它不会永远运行,是一个返回数字的函数,并接受一个mysqli连接为$ mysqli:
function getUniqueNumber($mysqli)
{
$is_unique = false;
$num = false;
$times_run = 0;
while (!$is_unique)
{
if($times_run > 10)
{
echo "Run too many times, dying.";
die();
}
$num = rand(1,5);
$sel_query = "SELECT id from test where id = " . $num;
$result2 = $mysqli->query($sel_query) or die($mysqli->error);
if (!mysqli_fetch_array($result2))
{
$is_unique = true;
}
$times_run++;
}
return $num;
}