当检查记录是否存在时循环 - 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));
我需要生成一个随机数。生成号码后,我需要检查我的 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));