for($j = 0 ; $j < 87; $j++){
echo $j.'<br/>';
$unique = mt_rand(0,100000000);
$insert_data = 'INSERT INTO uniques(uniq) VALUES ("'.$unique.'")';
mysqli_query($conn , $insert_data);
echo $unique.'<br />';
}
我只是想在表uniques中插入随机数。但是上面的代码有问题。当总循环低于86并且在循环超过86时获得两次插入时,它工作正常。
非常感谢!
我不是说我有重复的随机数。但似乎“INSERT INTO”在我的PHP代码中运行了两次!
答案 0 :(得分:1)
mt_rand(0,100000000)
只返回1
和100000000
之间的随机数,它不会跟踪先前生成的随机数,因此您可以获得重复项。
如果您想确保只在数据库中插入唯一值,您将必须保留生成的随机数的历史记录并继续调用mt_rand
直到您获得一个独特的。
答案 1 :(得分:1)
由于您需要唯一的数字,您可以在此处找到帮助
的示例http://www.php.net/manual/en/function.mt-rand.php#83365
或者,您可以使用where子句来避免重复,但如果要添加大量记录,这可能会很慢。