我在文件 index.php 中有以下代码:
include('db_connect.php'); //Here's the script that provides mysql connection to a database
$a = round(rand(1,100));
$b = round(rand(160,202));
$c = round(rand(50,110));
$d = round(rand(1,99999));
$sql = "INSERT INTO sInstance (p1,p2,p3,p4) VALUES ('".$a."','".$b."','".$c."','".$d."')";
$result = mysql_query($sql) or die(mysql_error());
显然,它会随机生成值并将它们作为记录插入到MyISAM数据库表 sInstance 中。
问题:生成约1000条记录后&插入后,几乎不可能生成新记录(具有唯一的值集)。每个新记录都是一个旧记录的克隆(具有相同的p1-p2-p3-p4值)。
问题:如何避免这种情况并让php生成唯一记录?
线索:这是PHP的服务器端问题,可能它以某种方式缓存了在RAND()函数帮助下设置的值。问题既没有连接到浏览器,也没有连接到mysql本身。
答案 0 :(得分:1)
不确定您是否做错了什么,但重置随机种子生成器可以解决问题:
答案 1 :(得分:0)
答案 2 :(得分:0)
使用服务器上的当前时间戳进行rand()的播种,因此当您快速生成随机值时,您可能会获得用于创建随机值的相同种子。
你确定它不会立即发生,并且仅在1000条记录之后才会发生吗?
您可以考虑使用更好的随机数生成器,例如mt_rand()