2016-09-06 22 views
0

私はいくつかのデータを引っ張ってNFCとGETメソッドを使用することになりますが、私は彼らがSQL&PHP固有の番号

TOM05543 
TOM04423 
KEL04432 
KAL43242 
のようにそれらのキーワードを持つ気にしない、ユニークな数字のトンをデータベースにしたいです

これを実行し、私のデータベースにこれらの一意のIDを入力する最も良い方法は何ですか?

+1

自動インクリメントの値はあなたのためには機能しませんか? – apokryfos

+0

@apokryfos数字がユニークで簡単に推測できないようにしたいのですが、機密データを保持しないように安全にすることが最優先事項ではありません。私はちょうど1,2,3,4,5,6などではない方法でそれをしたい...また、それらを短く維持し、一意のIDのより多くの量を移入するためにキーワードを追加する – NathanK

+0

あなたは何かを試しましたか?ユーザー。 –

答えて

1

ランダムなapha数値コードを生成し、そのコードがDBテーブルに存在するかどうかを確認するPHP関数を作成します。存在する場合、関数は一意のコードが生成されるまで再帰的に呼び出します。 DBテーブルに一意に生成されたレコードを挿入します。

<?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で提供されるソリューションを使用することがあります。GUIDの上

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

で見つけることができます、しかし、良い乱数ジェネレータが2つの同一のGUIDを生成する可能性は、2^122で約1です。つまり、1ミリ秒ごとにGUIDを生成すると、約10^26年で最初の重複をヒットします。

これは、キーが既に存在するかどうかを確認する必要がないという利点があります。

関連する問題