簡體   English   中英

如何在php中生成6位數字?

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

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