生成随机数和字符- MYSQL


Generate random numbers and characters - 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将自动生成一个随机代码,可能是整数和/或字符(仅a-z)的组合。

回复将帮助我完成这个项目。提前感谢:)

如果您只需要一个简单的随机散列,您可以使用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。

这是你要找的吗?

这是一个生成随机字符串

的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;
}

下面是生成随机码的函数。

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

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

Ex: $code = generateRandomString(5);

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

        //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]);
        }