如何在php中生成一个6位数字?

时间:2013-02-20 11:31:29

标签: php mysql

如何自动生成一个唯一的随机6位数字以插入到mysql表的列中?随机生成的数字不得存在于列中。

我通过php访问mysql。

表格式是这样的,随机数在reqnumber列中:

id,status,reqnumber

5 个答案:

答案 0 :(得分:2)

   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;
        }

答案 1 :(得分:1)

只需生成一个随机数,然后使用str_pad()

$myRandom = str_pad(rand(1,999999), 6, '0', STR_PAD_LEFT);

您将遇到的问题是,由于您要求它是随机的,因此在生成之前无法知道它是否存在于表中。你必须做一个循环并继续检查数据库。

答案 2 :(得分:0)

对reqnumber字段设置唯一约束并将错误处理代码放在PHP中

答案 3 :(得分:0)

虽然随机可以,但请注意,6位数只能提供100万种组合。我不确定在您开始获得重复的主键错误之前会持续多长时间。

更好的解决方案是使用唯一值。这与随机值非常不同,因为唯一值每次都保证不同。 MySql有auto_increment数据类型来帮助你解决这个问题。不幸的是,使用6位数时,您仍然只能使用100万个条目。

如果您想要一个完全随机的长标识符,请查看MySql's UUID functio n。它将生成一个保证永不重复的唯一字符串。但是它长于6个字符,因为这是实现唯一性所需要的。

答案 4 :(得分:0)

表结构的一部分必须是:

`id` mediumint(6) AUTO_INCREMENT NOT NULL,
PRIMARY KEY (`id`)

如果你真的需要6位数字:

ALTER TABLE tbl AUTO_INCREMENT = 100000;

或使用 sprintf()