如何创建一个表,生成数字和字符随机使用作为用户的传递代码?
这是我的代码:
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]);
}