我需要生成一个随机数。在我生成数字之后,我需要检查我的表以查看之前是否已生成该数字。如果随机数不是唯一的,我将重新生成该数字,直到生成一个唯一的数字。
这是我的代码:
$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循环。或者还有另一种更有效的方法吗?
答案 0 :(得分:1)
我清理了你的代码,修复了大多数问题(但要注意,在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);
答案 1 :(得分:1)
如果在所选日期列出启用的随机数,则更好,例如,您在每个执行脚本的日期生成随机循环
mysql_upgrade