我正在生成这样一个唯一的数字:
$unique_number = rand(100000000, 999999999);
我可以检查它是否存在:
$exists = $this->count_rows('table', "WHERE unique_number=" . $unique_number . "');
然后:
if ($exists >0){
echo 'It exists. Generate it again';
}
问题是......我怎么循环它,直到我得到一个不存在的数字?如果罕见的事件我生成的那个已经存在。
答案 0 :(得分:0)
尝试
while($exists >0){
$exists = $this->count_rows('table', "WHERE unique_number=" . $unique_number . "');
}
答案 1 :(得分:0)
也许你可以试试这个
$exists = 1;
while($exists > 0) {
$unique_number = rand(100000000, 999999999);
$exists = $this->count_rows('table', "WHERE unique_number=" . $unique_number . "');
}
未经测试
答案 2 :(得分:0)
这将有效:
function check_number(){
$unique_number = rand(100000000, 999999999);
$exists = $this->count_rows('table', "WHERE unique_number=" . $unique_number);
if ($exists >0){
$results = check_number();
}
else{
$results = $unique_number;
return $results;
}
}
答案 3 :(得分:0)
您需要编写一个类或函数来检查数据是否存在于DB中:如果是,则生成另一个,直到其为no然后添加到DB,请参阅smilar问题:
答案 4 :(得分:0)
这是另一种方式,它只是一个想法,希望它可以帮助你。
如果您循环检查表格中是否存在该号码,则会花费您
如果可以将计数增加到14
这肯定会帮到你
尝试从时间生成随机数
$unique_number = microtime(true) * 10000;
这将是独一无二的
您无需循环检查随机数是否在数据库中是唯一的。
这只是一个想法。认为它可以帮助您实现目标。