【发布时间】:2012-12-31 22:35:15
【问题描述】:
基本上,我创建了一个 SQL 查询以在数据库 $i 中插入大约 5000 个随机数(目前是 10 个)。
我之前尝试只在 MYSQL 中完成,但失败了,不想再在那里浪费时间了。
它将一个 10 位数字随机化,并与数组 ($codes) 交叉检查该数字,该数组包含来自数据库中不同表的超过 100,000 个值。它还将新的随机数添加到新数组 ($newNumbers) 中,因此它不会生成相同的新数字,然后将这些数字添加到 INSERT 查询中。它还有一个嵌套的while 循环来创建第二个数字,该数字也必须是完全唯一的。
希望这是有道理的..
无论如何,问题似乎出在嵌套的 while 内,它似乎是无限循环(而不是增加 $i),但我不知道为什么。
$query = "INSERT INTO 'table' ('num_id', `num1`, `num2`) VALUES";
$i = 0;
while ($i <= 10){
$rand = mt_rand(1000000000, 9999999999);
if (!in_array($rand, $codes) && !in_array($rand2, $newNumbers) ){
$newNumbers[] = $rand;
$second = 0;
while ($second == 0){
$rand2 = mt_rand(1000000000, 9999999999);
if (!in_array($rand2, $codes) && !in_array($rand2, $newNumbers) ){
$query .= " ('', $rand, $rand2)";
$newNumbers[] = $rand2;
$second = 1;
$i++;
}else
$duplicates ++;
}//end second loop
}else
$duplicates ++;
}//while
【问题讨论】:
-
检查这一行:
$query .= " ('', $rand, $rand2")";在这里解析错误,你有 3 x":) -
谢谢,我简化了查询以进行发布,我检查并在实际查询中是正确的。 :)
-
使用带有语法高亮的编辑器 NetBeans 是一个不错的免费替代品。
-
哈哈,在盯着屏幕一小时后自己修复了它,我似乎在第一个 IF 中检查 $rand2,然后才更改为新的。
if (!in_array($rand, $codes) && !in_array($rand2, $newNumbers) ){
标签: php mysql random numbers while-loop