簡體   English   中英

如何生成唯一代碼

[英]How to generate a unique code

我連接到我的數據庫,用戶提交他們的電子郵件地址。 這存儲在DB中。 這是我從一個turorial抓住的東西。

我想在文檔加載時通過JS生成一個用戶唯一的代碼。格式應該是6位數,只使用AZ和0-9。 即:F4DRB6

完成后,我需要在數據庫中存儲該用戶的唯一代碼。
生成器應檢查數據庫中是否存在唯一代碼,以確保它實際上是唯一的。

我遇到的麻煩是; 我不知道如何以上述格式創建唯一代碼,檢查它是否是DB中唯一的,然后將其存儲在與該用戶對應的DB中。 我假設另一個列以某種方式匹配該行?

謝謝!

編輯:我試過這個..如果有任何錯誤,請指出它。 謝謝

function genRandomString() {
    $length = 5;
    $characters = '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $string = '';    

    for ($p = 0; $p < $length; $p++) {
        $string .= $characters[mt_rand(0, strlen($characters))];
    }
    return $string;
}

do {
  $random_string = $this->genRandomString();
} while (mysql_num_rows(mysql_query("SELECT referralcode FROM ".coming_soon_emails." WHERE rand_string='{$random_string}'")));
$q = "INSERT INTO ".coming_soon_emails." SET referralcode='{$random_string}'";
$result = mysql_query($q);

為什么你需要在客戶端創建? 為什么不能在客戶提交“最終”表單時創建代碼?

您可以隨機創建此代碼,並將處理代碼的列設置為unique 如果您收到違規錯誤,請生成另一個錯誤,然后重試。

嗯,這是做的方法之一......

它的簡單數學,6 ^ 36足夠大,創建一個隨機id大多是唯一的。

如果您想100%確定使用AJAX檢查數據庫中生成的ID並重新創建是否存在。

通過一種因果關系,簡單的演練將是:

在mysql中寫一個函數/ SP

首先,生成隨機代碼,如AbiusX所說,取決於您的用戶池大小,新代碼可能很少使用。

這將為您生成一個十六進制字符,並應該讓您開始。

SELECT conv(FLOOR((RAND()* 16)),10,16);

然后,您需要檢查此代碼是否已被使用。 `

SELECT * FROM usertable其中code = generatedcode

如果是這樣,生成一個新的。

在一個更健壯的設置中,我總是預先生成唯一代碼,並將它們存儲在“未使用的代碼”等表中,這樣我就可以抓住任何代碼並確保它是唯一的而不是使用的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM