php - 如何在 php 中生成唯一随机数

标签 php mysql database random

<分区>

Possible Duplicate:
Algorithm for generating a random number

您好,我需要为数据库中的某些条目分配一个随机生成的数字,并且它必须是唯一的。 我使用:

$random_number = mt_rand();
mysqli_query($db_connection, "INSERT INTO my_table (rand_num, blabla) VALUES ('$random_number', '$blabla')");

但当然,2 个随机数相同的可能性总是很小。 然后我可以做类似的事情:

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();
}

但这只会检查一次号码,并且新生成的号码仍然有可能已经存在于数据库中。

有什么建议吗? 谢谢

最佳答案

这里有一个你可以使用的方法:

<?php
$num= mt_rand();
$con = mysql_connect("localhost","uname","password");
mysql_select_db("dbname",$con);
$sel_query  = "SELECT *  FROM  my_table WHERE rand_num =%d"; // query to select value 
$ins_query = "INSERT INTO my_table(rand_num) VALUES(%d)";    // query to insert value
$result =  mysql_query(sprintf($sel_query,$num),$con);
while( mysql_num_rows($result) != 0 ) {                      // loops till an unique value is found 
    $num = mt_rand();
    $result = mysql_query(sprintf($sel_query,$num),$con);
}
mysql_query(sprintf($ins_query,$num),$con); // inserts value 

?>

关于php - 如何在 php 中生成唯一随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8834493/

相关文章:

php - root@localhost 的访问被拒绝 MYSQL 错误

mysql - 在 MySQL 中结合使用 SELECT DISTINCT 和 UNION DISTINCT - 有什么效果吗?

c# - 未更新的行

php - 如何在一个 MySQL 查询中从不同的表中进行选择?

PHP交替颜色

mysql - 在mysql中按日期交叉连接

c++ - 如何在小型聊天应用程序中为数据库存储的用户事务建模?

python - 将帐户余额安全地存储在数据库中?

php - for 循环内的 mysql_query 给出与 mysql_fetch_assoc 相关的错误/警告

php - 使用Google Spreadsheet API获取通过过滤器 View 过滤的值