繁体   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