導航:首頁 > 編程語言 > php生成唯一編號

php生成唯一編號

發布時間:2022-07-02 07:32:53

『壹』 php:如何生成隨機的唯一字母數字字元串

1. 自己寫代碼產生隨機的數字和字母組合,每產生1個去資料庫查詢該隨機碼是否已存在,如果已存在,則重新產生,直到不重復為止。
缺點:產生速度慢,還要查詢資料庫,當數據量大的時候,可能重復的機率會比較高,要查詢多次資料庫.
2. guid,該方法應該是用的比較多的。
優點:使用簡單方便,不用自己編寫額外的代碼
缺點:佔用資料庫空間相對較大,特別是根據guid查詢速度比較慢(畢竟是字元串)。
3. 主鍵+隨機碼的方式,我們產生的隨機碼保存到資料庫肯定會有個主鍵,用該主鍵+隨機字元來組合。產生步驟:
1) 先從id生成器中獲取id,比如是155.
2)填充成固定位數(比如8位)的字元串(不夠位數的左邊填0,超過位數直接使用該數字),得到:00000155
3)在每個數字後面隨機插入1個字母或其它非數字元號,得到:0A0F0R0Y0H1K5L5M
這樣就可以得到1個隨機的唯一的邀請碼了。
優點:使用也比較簡單,不用查詢資料庫。最大的優點是查詢的時候,可以根據邀請碼直接得到主鍵id,然後根據id去資料庫查詢(速度很快),再比較查詢出來的邀請碼和用戶提交的邀請碼是否一致。
缺點:需要使用id產生器,如果主鍵是資料庫自增長的就不太好用(需要先插入資料庫獲取id,再更新邀請碼)。
4. 有時候產品經理說,我要求邀請碼都是數字的。把方法3變通下就可以實現唯一的純數字隨機碼了。
1) 獲取id: 155
2) 轉換成8進制:233
3) 轉為字元串,並在後面加'9'字元:2339
4)在後面隨機產生若干個隨機數字字元:2003967524987
轉為8進制後就不會出現9這個字元,然後在後面加個'9',這樣就能確定唯一性。最後在後面產生一些隨機數字就可以。

『貳』 php 生成唯一id的幾種解決方法

1、md5(time() . mt_rand(1,1000000));
這種方法有一定的概率會出現重復
2、php內置函數uniqid()
uniqid() 函數基於以微秒計的當前時間,生成一個唯一的 ID.
方法返回結果類似:5DDB650F-4389-F4A9-A100-501EF1348872

『叄』 怎麼讓php生成唯一數字ID的重復度降低

uniqid() 函數基於以微秒計的當前時間,生成一個唯一的 ID
uniqid(prefix,more_entropy)

prefix 可選。為 ID 規定前綴。如果兩個腳本恰好在相同的微秒生成 ID,該參數很有用。
more_entropy 可選。規定位於返回值末尾的更多的熵。
如果 prefix 參數為空,則返回的字元串有 13 個字元串長。如果 more_entropy 參數設置為 true,則是 23 個字元串長。
如果 more_entropy 參數設置為 true,則在返回值的末尾添加額外的熵(使用組合線形同餘數生成程序),這樣可以結果的唯一性更好。

『肆』 php產生唯一數字,並在資料庫裡面檢查是否重復,如果重復則重新生成,怎麼實現

在資料庫中將該欄位設為 unique
php提交時 如果重復則會 返回false
此時在php函數中重新生成

『伍』 php不能像mysql那樣直接用uuid生成唯一標識碼嗎

myssqli和mysql的函數是差不多的, 只不過, mysqi可以用對象方式


//過程方式:
$Con=mysqli_connect('資料庫伺服器地址','資料庫登陸用戶','資料庫密碼');
mysqli_select_db($Con,'資料庫名稱');

//對象方式
$Con=newmysqli('資料庫伺服器地址','資料庫登陸用戶','資料庫密碼','資料庫名稱');

同樣是過程方式,mysqli有一點和mysql的用法不同的是,:

mysql函數,很多函數都有2個參數,一個是sql語句等, 一個是mysql連接標識, 而這個mysql連接標識參數是可以省略的!

但是mysqli兩個參數必須, 而且順序相反, 比如:

mysql_query('showtables',$Con);
//也可以省略第二個參數,寫成:
mysql_query('showtables');
//但是mysqli不行
mysqli_query($Con,'showtables');

『陸』 php 隨機生成不重復用戶ID

php可以使用uniqid函數生成唯一的ID

uniqid — 生成一個唯一ID

stringuniqid([string$prefix=""[,bool$more_entropy=false]])

獲取一個帶前綴、基於當前時間微秒數的唯一ID。

參數說明:

prefix:有用的參數。例如:如果在多台主機上可能在同一微秒生成唯一ID。

prefix為空,則返回的字元串長度為13。more_entropy 為 TRUE,則返回的字元串長度為23。

more_entropy:如果設置為 TRUE,uniqid() 會在返回的字元串結尾增加額外的煽(使用combined linear congruential generator)。使得唯一ID更具唯一性。

返回值:

返回字元串形式的唯一ID。

『柒』 求該方法生成的「唯一編號」有重復的幾率。 - PHP進階討論

我覺得寫這個代碼的人不知道想賣弄什麼~如果說要生成一個重復率較低的編號我覺得下面的代碼更好:$o = explode(\' \', microtime());$o = $o[1].substr($o[0], 2).rand(100000, 999999);echo $o;這個絕對比你那個生成的唯一性好~

『捌』 PHP的uniqid函數產生的id真的是唯一的么

生成唯一ID的應用場景非常普遍,如臨時緩存文件名稱,臨時變數,臨時安全碼等,uniqid()函數基於以微秒計的當前時間,生成一個唯一的 ID。由於生成唯一ID與微秒時間關聯,因此ID的唯一性非常可靠。

生成的唯一ID默認返回的字元串有 13 個字元串長,如果不定義唯一ID的前綴,最多可返回23個字元串長,如果再結合md5()函數,生成的唯一ID可靠性將更高,這種生成的ID比隨機性的ID 最大優點在於可實現排序,特別是一些需要存儲在資料庫中的值。

閱讀全文

與php生成唯一編號相關的資料

熱點內容
文本命令行 瀏覽:95
撲克牌睡眠解壓 瀏覽:190
rc4演算法流程圖 瀏覽:157
胡蘿卜解壓方法 瀏覽:35
掃描pdf格式軟體 瀏覽:876
程序員在銀行開賬戶 瀏覽:516
android資料庫下載 瀏覽:748
中午伺服器崩潰怎麼辦 瀏覽:425
產品經理和程序員待遇 瀏覽:442
解憂程序員免費閱讀 瀏覽:109
錄像免壓縮 瀏覽:508
總結所學過的簡便演算法 瀏覽:362
南昌哪些地方需要程序員 瀏覽:761
三台伺服器配置IP地址 瀏覽:175
如何用命令方塊連續對話 瀏覽:280
win7linux共享文件夾 瀏覽:304
命令符打開本地服務 瀏覽:601
android應用程序源碼 瀏覽:705
安卓開發工程師簡歷怎麼寫 瀏覽:63
熱水器水量伺服器是什麼意思 瀏覽:119