我将使用与NFC GET方法去拉一些数据,我想填充一吨的唯一数字的数据库,我不介意他们有像SQL和PHP唯一编号
TOM05543
TOM04423
KEL04432
KAL43242
在他们的关键字
什么是最好的方法做到这一点,并用这些独特的ID填充我的数据库之前?
我将使用与NFC GET方法去拉一些数据,我想填充一吨的唯一数字的数据库,我不介意他们有像SQL和PHP唯一编号
TOM05543
TOM04423
KEL04432
KAL43242
在他们的关键字
什么是最好的方法做到这一点,并用这些独特的ID填充我的数据库之前?
创建一个PHP函数,它可以生成一个随机的apha数字代码并检查数据库表中是否存在代码。如果存在,则递归调用函数直到生成唯一代码。并在数据库表中插入唯一生成的记录。
<?php
//DB connection
$con=mysqli_connect("localhost","my_user","my_password","my_db");
//Function to generate unique alpha numeric code
function generateRandomNumer($con,$len=8){
$randomString = substr(MD5(time()),$len);
//Check newly generated Code exist in DB table or not.
$query = "select * from table_name where col_name='".$randomString."'";
$result=mysqli_query($con,$query);
$resultCount=mysqli_num_rows($result);
if($resultCount>0){
//IF code is already exist then function will call it self until unique code has been generated and inserted in Db.
generateRandomNumer($con);
}else{
//Unique generated code will be inserted in DB.
mysqli_query($con,"INSERT INTO Persons (col_name) VALUES ('".$randomString."')");
}
}
//Loop to insert number of unique code in DB.
//NUM_OF_RECORD_YOU_WANT_TO_INSERT define constant which contain number of unique codes you wants to insert in DB.
for($i=0;$i<NUM_OF_RECORD_YOU_WANT_TO_INSERT;$i++){
generateRandomNumer($con);
}
?>
您可以使用在http://guid.us/GUID/PHP所提供的解决方案是:
function getGUID(){
if (function_exists('com_create_guid')){
return com_create_guid();
}else{
mt_srand((double)microtime()*10000);//optional for php 4.2.0 and up.
$charid = strtoupper(md5(uniqid(rand(), true)));
$hyphen = chr(45);// "-"
$uuid = chr(123)// "{"
.substr($charid, 0, 8).$hyphen
.substr($charid, 8, 4).$hyphen
.substr($charid,12, 4).$hyphen
.substr($charid,16, 4).$hyphen
.substr($charid,20,12)
.chr(125);// "}"
return $uuid;
}
}
的GUID的更多信息可以在https://en.wikipedia.org/wiki/Globally_unique_identifier
找到我意识到,一个GUID是不是技术上独有的,但是一个好的随机数发生器产生两个相同的GUID的机会大约是1^2^122,这意味着如果每1毫秒产生一个GUID,那么在10^26年左右就会产生第一个副本。
这样做的好处是不需要检查数据库,如果密钥已经存在或没有,因为我们假设它不是。
不是自动递增的值适合你吗? – apokryfos
@apokryfos我希望这些数字是独一无二的,不容易被猜到,让它们安全,因为它不会保存敏感数据并不是最重要的。我只是想它的方式,它不是1,2,3,4,5,6等...还保持他们短,并添加关键字来填充大量的唯一ID's – NathanK
你有没有尝试过或想要的代码由SO用户。 –