如何创建一个随机生成数字和字符的表,以用作用户的传递代码?
这是我的代码:
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)。
回复将帮助我完成这个项目。在此先感谢:)
答案 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]);
}