[英]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.