生成随机数字和字符 - MYSQL

时间:2014-05-23 07:48:55

标签: javascript php mysql

如何创建一个随机生成数字和字符的表,以用作用户的传递代码?

这是我的代码:

create table reservation(rID int auto_increment, rCode varchar(255) magic_number, user varchar(255), address varchar(255), room_type varchar(255), primary key(rID));

当用户完全签署所需的所有字段时,信息将被传输到数据库,并且列rCode将自动生成随机代码,可能是整数和/或字符的组合(仅限az)。

回复将帮助我完成这个项目。在此先感谢:)

4 个答案:

答案 0 :(得分:4)

如果你只需要一个简单的随机哈希,你就可以使用mysql的所有加密功能。以下是您的情况示例:

INSERT INTO reservation (
    rCode, user, address, room_type
) VALUES (
    SHA1(NOW()), 'the name', 'the address', 'the room'
);

如果你需要一定的长度(比方说8),只需使用substring:

SUBSTRING(SHA1(NOW()), 0, 8)

甚至更好:

SUBSTRING(SHA1(NOW()), ROUND(RAND() * 100) % 32, 8)

最后一个生成一个从0到32的随机起始点,并使用以下8位数作为您的代码(sha1总是40个字符长...因此32)。如果您的代码需要10个字符,只需将8替换为10,将32替换为30。

这是你在找什么?

答案 1 :(得分:2)

这是一个生成随机字符串

的PHP函数
function rand_string( $length )
{
    $chars = "ABCDEFGHJKLMNPQRSTUVWXYZ";

    $size = strlen( $chars );
    $str = "";
    for( $i = 0; $i < $length; $i++ ) {
        $str .= $chars[ rand( 0, $size - 1 ) ];
    }

    return $str;
}

答案 2 :(得分:1)

这是生成随机代码的功能。

function generateRandomString($length = 10) {
    $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $randomString = '';
    for ($i = 0; $i < $length; $i++) {
        $randomString .= $characters[rand(0, strlen($characters) - 1)];
    }
    return $randomString;
}

您可以通过调用thi函数生成随机字母数字代码,并将代码的长度作为参数传递。

例如:$code = generateRandomString(5);

这将返回一个5个字符长的代码,并存储在$code

答案 3 :(得分:0)

        //update code_bazaryab fake not have code
         $model = new \Modules\Membership\Models\user();

        $rows = $model->get_all_null_code_bazaryabi();
        foreach($rows as $row){

            $chars = "ABCDEFGHJKLMNPQRSTUVWXYZ1234567890";

            $size = strlen( $chars );
            $str = "";
            for( $i = 0; $i < 10 ; $i++ ) {
                $str .= $chars[ rand( 0, $size - 1 ) ];
            }

            $model->update_user(['code_bazaryab'=>$str],['userid'=>$row->userid]);

        }