Php 如何为数据库中插入的每一行生成一个15(字母数字)字符长度的唯一字符串?
我正在创建用户并将其保存在数据库表中。 我想创建一个名为:haskey的列,我在其中为每个创建的用户存储一个随机且唯一的15位字母数字字符串,以便它对每个用户都是唯一的。我如何做到这一点?PHP有rand()Php 如何为数据库中插入的每一行生成一个15(字母数字)字符长度的唯一字符串?,php,mysql,forms,laravel,Php,Mysql,Forms,Laravel,我正在创建用户并将其保存在数据库表中。 我想创建一个名为:haskey的列,我在其中为每个创建的用户存储一个随机且唯一的15位字母数字字符串,以便它对每个用户都是唯一的。我如何做到这一点?PHP有rand() 函数生成器域名($len=16){ $char='abcdefghijklmnopqrstuvxyz1234567890'; $randomNumber=''; 对于($i=0;$i
函数生成器域名($len=16){
$char='abcdefghijklmnopqrstuvxyz1234567890';
$randomNumber='';
对于($i=0;$i<$len;$i++){
$randomNumber.=$char[rand(0,$len-1)];
}
返回$randomNumber;
}
随机生成的值是唯一的。PHP有rand()
函数生成器域名($len=16){
$char='abcdefghijklmnopqrstuvxyz1234567890';
$randomNumber='';
对于($i=0;$i<$len;$i++){
$randomNumber.=$char[rand(0,$len-1)];
}
返回$randomNumber;
}
随机生成的值是唯一的。Laravel具有名为str_random()的内置辅助函数。您可以使用它来生成密钥
str_random(15)
或者我建议你使用
拉维尔哈希德酒店
需要在项目的根目录中使用此软件包和Composer
$ composer require vinkla/hashids
将服务提供者添加到提供者数组中的config/app.php
Vinkla\Hashids\HashidsServiceProvider::class
如果你愿意,你可以使用门面。将config/app.php中的引用添加到别名数组中
'Hashids' => Vinkla\Hashids\Facades\Hashids::class
用法
//这个例子很简单,可用的方法多得多。Laravel内置了名为str_random()的辅助函数。您可以使用它来生成密钥
str_random(15)
或者我建议你使用
拉维尔哈希德酒店
需要在项目的根目录中使用此软件包和Composer
$ composer require vinkla/hashids
将服务提供者添加到提供者数组中的config/app.php
Vinkla\Hashids\HashidsServiceProvider::class
如果你愿意,你可以使用门面。将config/app.php中的引用添加到别名数组中
'Hashids' => Vinkla\Hashids\Facades\Hashids::class
用法
//这个例子很简单,可用的方法多得多。试试这个:
<?php
$serial = str_split('ABCDEFGHIJKLMNOPQRSTUVWXYZ'
.'0123456789');
$haskey = '';
foreach (array_rand($serial, 15) as $a) $haskey.= $serial[$a];
echo $haskey;
?>
将“$haskey”插入数据库。尽管不能保证不重复字符。尝试以下操作:
<?php
$serial = str_split('ABCDEFGHIJKLMNOPQRSTUVWXYZ'
.'0123456789');
$haskey = '';
foreach (array_rand($serial, 15) as $a) $haskey.= $serial[$a];
echo $haskey;
?>
将“$haskey”插入数据库。尽管不能保证不会重复字符。您可以使用一个根据RFC 4122标准创建ID的,该ID对于每个用户都是唯一的。(普遍独特)
步骤1:根据您的laravel版本要求软件包(以下步骤适用于laravel 5.*)
步骤2:编辑config/app.php
并添加别名
'aliases' => [
'Uuid' => Webpatser\Uuid\Uuid::class,
]
步骤3:现在可以生成UUID,如下所示
Uuid::generate()
希望它能对您有所帮助。您可以使用根据RFC 4122标准创建的ID,该ID对于每个用户都是唯一的。(普遍独特)
步骤1:根据您的laravel版本要求软件包(以下步骤适用于laravel 5.*)
步骤2:编辑config/app.php
并添加别名
'aliases' => [
'Uuid' => Webpatser\Uuid\Uuid::class,
]
步骤3:现在可以生成UUID,如下所示
Uuid::generate()
希望对您有所帮助。既然您标记了此Laravel,我将为您提供一个Laravel解决方案。使用此函数可以轻松生成更真实的“随机”字母数字字符串:
use Illuminate\Support\Str;
$var = Str::random(15);
// $var => "kAQUxlywesTKLrP"
祝你好运 既然你标记了这个Laravel,我就给你一个Laravel解决方案。使用此函数可以轻松生成更真实的“随机”字母数字字符串:
use Illuminate\Support\Str;
$var = Str::random(15);
// $var => "kAQUxlywesTKLrP"
祝你好运 在这个例子中,$numberLength总是36,对吗?我修改了代码,你能检查一下,它可能满足你的要求谢谢你..它看起来不错..无论我使用哪种方法..我必须检查我的数据库,如果字符串存在,首先进行双重检查,对吗?虽然生成相同字符串的几率很低?在本例中,$numberLength始终为36,对吗?我修改了代码,你能检查一下吗,它可能满足你的要求谢谢你..它看起来不错..无论我使用哪种方法..我必须先检查我的db,如果字符串存在,进行双重检查,对吗?虽然生成相同字符串的几率很低?非常感谢您的帮助。是的,如果我使用此方法,我需要再次检查数据库中是否存在此类字符串。我认为无论使用哪种方法,都最好检查它是否存在。非常感谢您的帮助。是的,如果我使用此方法方法我需要再次检查数据库中是否存在这样的字符串..我认为无论我使用哪种方法,最好还是检查它是否正确存在XX@Saravanan Sampathkumar,第一种方法简短,代码更少。但如果我使用它,我仍然应该在插入右图之前检查数据库中是否存在字符串?大多数情况下,它应该是唯一的。但是我建议您使用hashid。hashid是唯一的。否则请在这里检查并使用scott的答案thxx@Saravanan Sampathkumar,第一个方法简短且代码较少。但如果我使用该方法,我应该在插入正确的字符串之前检查数据库中是否存在字符串?大多数情况下,它应该是唯一的。但是我建议您使用hashid。hashid是唯一的。否则,请在此处检查并使用scott的答案。您是否尝试了一些代码?\您是否尝试了一些代码\