当检查记录是否存在时循环 - PHP

While Loop when checking if record exists - PHP

我需要生成一个随机数。生成号码后,我需要检查我的 table 以查看之前是否生成过该号码。如果随机数不是唯一的,我会重新生成这个数字,直到生成一个唯一的数字。

这是我的代码:

$con=mysqli_connect($host,$user,$pass,$database);

$random = rand(1000, 9999);

$result = mysqli_query($con,"SELECT * FROM tablex WHERE randomnumber = '.$random .'");

$num_rows = mysqli_stmt_num_rows ($result);

while ($num_rows > 0) {

$random = rand(1000, 9999);
$num_rows = mysql_num_rows($result);
 }

$random = rand(1000, 9999);

我需要知道这个算法是否正确 - 特别是。 while 循环。或者还有其他更有效的方法吗?

我清理了你的代码,解决了大部分问题(但请注意,在 8999 次调用后,它仍然会无限循环)。

$con=mysqli_connect($host,$user,$pass,$database);
do {
$random = mt_rand(1000,9999);
$result = $con->query("SELECT * FROM tablex WHERE email = '.$random .'");
$num_rows = $result->num_rows;
} while ($num_rows > 0);

如果您在选定的日期列出启用的随机数更好,例如您在脚本执行的每个日期生成随机循环

$con=mysqli_connect($host,$user,$pass,$database);
$randomnumbers = [];
$query = "SELECT randomnumber FROM tablex WHERE (DATE(tablex.randomdate) = DATE(NOW()))";
$result = mysqli_query($con, $query);
while ($row = mysqli_fetch_assoc($result)) {
 $randomnumbers[] = $row['randomnumber'];
}
do {
 $random = mt_rand(1000, 9999);
} while (in_array($random, $randomnumbers));