为什么此代码生成的随机代码存储为7位数而不是8位数

sri*_*h s 4 php mysql

下面的代码生成八位数,但在db中存储时有时存储为7位数.db列宽为int(11),db为mysql(5.0.45)

srand ((double) microtime( )*1000000);
 $maxid = rand(0,100000000);
 $mtidno = str_pad($maxid,8);
 $shuffled = str_shuffle($mtidno);
 echo  $shuffled;
Run Code Online (Sandbox Code Playgroud)

Bar*_*chs 5

首先,通过使用str_pad这样,您将引入空格,这可能会进入"随机"数字的中间.

将您的str_pad电话改为:

str_pad($maxid, 8, "0");
Run Code Online (Sandbox Code Playgroud)

摆脱空间.但请注意,其他问题提供了创建随机8位数字的更好方法.

然后,当你的洗牌结果以0's 开头时,它们就会掉线.

要解决此问题,您可以CHAR(8)在数据库中使用a .然后它将显示前导零.