如何自動生成一個唯一的隨機6位數字插入到mysql表的列中?隨機生成的數字不得存在於列中。我如何在PHP中生成6位數字?
我正在通過php訪問mysql。
表格式是這樣的話,用在reqnumber列隨機數去:
id,status,reqnumber
如何自動生成一個唯一的隨機6位數字插入到mysql表的列中?隨機生成的數字不得存在於列中。我如何在PHP中生成6位數字?
我正在通過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;
}
這是不可能產生'000010'。 – BenM 2013-02-20 11:39:22
OH在那種情況下你的答案看起來不錯,但它需要檢查數據庫 – 2013-02-20 11:41:53
你能幫我寫下「ifnumberinyourdatabase」的代碼嗎? $ query_idgetrs =「SELECT id FROM servicetbl」; $ idgetrs = mysql_query($ query_idgetrs,$ dbconnection)或die(mysql_error()); while($ idgetrs1 = mysql_fetch_array($ idgetrs)){ $ peyg = $ idgetrs1 [0]; echo $ peyg; } 幫助,如果'1或more'意味着它在你的數據庫中,以便產生'$ num'再次 – 2013-02-20 11:50:13
就產生一個隨機數然後用str_pad()
:
$myRandom = str_pad(rand(1,999999), 6, '0', STR_PAD_LEFT);
,你要碰上的是,因爲你需要這是隨機的問題,有沒有w ^唉,知道它是否存在於表中,直到它生成。你必須做一個循環,並繼續檢查數據庫。
雖然隨機確定,但請注意,6位數只能提供100萬組合。我不確定在開始獲取重複的主鍵錯誤之前需要多長時間。
更好的解決方案是使用獨特的值。這與隨機值非常不同,因爲每次都有獨特的值保證不同。 MySql有auto_increment數據類型來幫助你做到這一點。不幸的是,使用6位數字時,您仍然限制在一百萬條記錄中。
如果您想要一個完全隨機的長標識符,請檢查MySql's UUID functio n。它會生成一個唯一的字符串,保證不會重複。然而,它比6個字符長得多,因爲這可以實現唯一性。
你的表結構的一部分必須是:
`id` mediumint(6) AUTO_INCREMENT NOT NULL,
PRIMARY KEY (`id`)
如果你真的需要6個位數總是:
ALTER TABLE tbl AUTO_INCREMENT = 100000;
或使用 sprintf()
這將最大長度爲6分配給整數。它不會將'12'轉換爲'000012'。 – BenM 2013-02-20 11:38:09
隨機產生或增加對錶中已有最新的ID? – 2013-02-20 11:32:17
隨機請 – 2013-02-20 11:33:08
將你的id設置爲'int AUTO_INCREMENT PRIMARY KEY',當你插入一個新行時它會自動增加,並且是唯一的。 – vikingmaster 2013-02-20 11:34:45