【发布时间】:2012-01-12 11:41:29
【问题描述】:
您好,我需要为数据库中的某些条目分配一个随机生成的数字,并且它必须是唯一的。 我用:
$random_number = mt_rand();
mysqli_query($db_connection, "INSERT INTO my_table (rand_num, blabla) VALUES ('$random_number', '$blabla')");
但是,两个随机数相同的可能性总是很小。 然后我可以做类似的事情:
function random_check($random_number) {
require_once('db_access.php');
$random_check = mysqli_query($db_connection, "SELECT rand_num FROM my_table");
mysqli_close($db_connection);
$result = 1;
while($row = mysqli_fetch_array($random_check)){
if ($row['rand_num'] == $random_number) {
$result=0
}
}
return $result;
};
$random_number = mt_rand();
$random_check = random_check($random_number);
if ($random_check == 0) {
$random_number = mt_rand();
}
但这只会检查一次号码,并且仍然有可能新生成的号码已经存在于数据库中。
有什么建议吗? 谢谢
【问题讨论】:
-
为什么不能使用自动增量?另外,您在询问之前检查了哪些:stackoverflow.com/search?q=random+number+mysql,为什么他们没有解决您的问题?
-
如果不能使用自增,可以是字符串吗?
-
查看this question on the birthday paradox,了解有关 PRNG 和随机数唯一性的一些讨论。