2016-09-06 50 views
0

我将使用与NFC GET方法去拉一些数据,我想填充一吨的唯一数字的数据库,我不介意他们有像SQL和PHP唯一编号

TOM05543 
TOM04423 
KEL04432 
KAL43242 
在他们的关键字

什么是最好的方法做到这一点,并用这些独特的ID填充我的数据库之前?

+1

不是自动递增的值适合你吗? – apokryfos

+0

@apokryfos我希望这些数字是独一无二的,不容易被猜到,让它们安全,因为它不会保存敏感数据并不是最重要的。我只是想它的方式,它不是1,2,3,4,5,6等...还保持他们短,并添加关键字来填充大量的唯一ID's – NathanK

+0

你有没有尝试过或想要的代码由SO用户。 –

回答

1

创建一个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); 
} 
?> 
+0

太棒了!谢谢拉胡尔。 – NathanK

+0

@NathanK欢迎您。 –

+0

好的答案,但选择的随机字符串需要引用。这会引发语法错误。 –

0

您可以使用在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年左右就会产生第一个副本。

这样做的好处是不需要检查数据库,如果密钥已经存在或没有,因为我们假设它不是。