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

时间:2015-02-01 22:14:49

标签: php mysql random mysqli while-loop

我需要生成一个随机数。在我生成数字之后,我需要检查我的表以查看之前是否已生成该数字。如果随机数不是唯一的,我将重新生成该数字,直到生成一个唯一的数字。

这是我的代码:

$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循环。或者还有另一种更有效的方法吗?

2 个答案:

答案 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