【发布时间】:2013-08-31 15:23:22
【问题描述】:
我在 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本身。
【问题讨论】:
-
我建议每次都使用 mt_rand() 而不是 rand()
-
这些数字需要有多独特?它们应该用于加密操作吗?
标签: php mysql caching random auto-generate