如何生成SQL数据库中不存在的随机整数?

时间:2015-05-01 15:00:38

标签: php sql random

目前正在开发一个登录脚本,该脚本允许存在具有相同用户名的多个用户。目前的计划是产生一个随机的秘密"用户ID代替实际的用户名。那么我将如何生成随机整数并检查是否已添加?

这是我对代码的尝试;但它似乎没有用,因为它似乎没有做任何事情。

$looptime = 100;

while ($looptime > 0) {
    $userid = rand(0, 999999999);
    $SQL = "SELECT * FROM Accounts WHERE username = '" . $userid . "'";
    $result_id = @mysql_query($SQL) or die("DATABASE ERROR!");
    $total = mysql_num_rows($result_id);

    if (!$total) {
        $looping = 0;
        //CREATE THE ACCOUNT
        mysql_query("INSERT INTO Accounts (id,username,password, email, money, activated) VALUES ('', '$username','$password', '$email', '0', '1')") or die("REGISTER ERROR!"); //1=account activated

        //CONNECTED
        echo "IMCONNECTED";
    }
    $looptime--;
}

编辑:代码/编号应该相当容易记住/在某处记下,因为用户可以查看和/或记下它以便进行帐户恢复。

2 个答案:

答案 0 :(得分:1)

我建议使用UUID / GUID(不是整数)来最小化冲突的可能性,或使用标识列(非随机)来保证唯一性。它必须是一个整数,是否必须是随机的?

答案 1 :(得分:1)

您是否在表格中使用了整数?您可以将此ID附加到用户名。例如:MyUsername1234,MyUsername1245。