[英]How can i generate a 6 digit number in php?
如何自動生成一個唯一的,隨機的6位數字以插入到mysql表的列中? 列中不能已經存在隨機生成的數字。
我正在通過php訪問mysql。
表格格式是這樣的,隨機數放在reqnumber列中:
id,status,reqnumber
function gen(){
$num = rand(100000,999999);
if($num == ifnumberinyourdatabase){
gen();
}
return $num;
}
您還可以在此處使用遞歸函數。 如果生成的是新數據庫,則不檢查編號是否為您的數據庫(如果不返回唯一編號)
function gen(){
$num = rand(100000,999999);
$query_idgetrs = "SELECT * FROM servicetbl where reqnumber = $num";
$idgetrs = mysql_query($query_idgetrs, $dbconnection) or die(mysql_error());
$row = mysql_num_rows($idgetrs);
if($row >= 1){
gen();
}
return $num;
}
只需生成一個隨機數,然后使用str_pad()
:
$myRandom = str_pad(rand(1,999999), 6, '0', STR_PAD_LEFT);
您將要遇到的問題是,由於您需要將其隨機化,因此無法生成它,直到表生成為止。 您必須進行循環並繼續檢查數據庫。
在reqnumber字段上放置唯一約束,並在PHP中放置錯誤處理代碼
盡管可以隨機選擇,但請注意6位數字只能提供100萬個組合。 我不確定要開始重復的主鍵錯誤需要多長時間。
更好的解決方案是使用唯一值。 這與隨機值有很大的不同,因為唯一值每次都會保證不同。 MySql具有auto_increment數據類型來幫助您解決此問題。 不幸的是,使用6位數字時,您仍然只能輸入100萬個條目。
如果您想要一個完全隨機的長標識符,請查看MySql的UUID函數 。 它將生成一個保證永不重復的唯一字符串。 但是,它比6個字符長得多,因為這是實現唯一性所需要的。
表結構的一部分必須是:
`id` mediumint(6) AUTO_INCREMENT NOT NULL,
PRIMARY KEY (`id`)
如果您確實確實需要6位數字:
ALTER TABLE tbl AUTO_INCREMENT = 100000;
或使用sprintf()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.