嘿所有我创建的2个随机数字如下:
$firstlink = intval(mt_rand(100, 999) . mt_rand(100, 999) . mt_rand(1, 9) . mt_rand(100, 999)); // 10 digit
$secondLink = intval(mt_rand(1000, 999) . mt_rand(1, 999) . mt_rand(10, 99) . mt_rand(100, 999));
这是我的插入代码:
$result = mysql_query("INSERT INTO userAccount
(Category,Fname,LName,firstlink,secondLink,AccDate)
VALUES ( '" . $cat . "',
'" . $fname . "',
'" . $lname . "',
" . $firstlink . ",
" . $secondLink . ",
'" . date('Y-m-d g:i:s',time()). "');");
它没有错误,它将数据放入mysql数据库。但是,对于 BOTH firstlink 和 secondLink ,它总是相同的数字,无论我添加到数据库的是谁,我也不知道为什么要这样做!
这两行的数据类型是 INT(15)
答案 0 :(得分:1)
删除intval,一切正常。
$firstlink = mt_rand(100, 999) . mt_rand(100, 999) . mt_rand(1, 9) . mt_rand(100, 999); // 10 digit
32位系统的最大有符号整数范围为-2147483648到2147483647.对于intval,你主要得到2147483647.
答案 1 :(得分:0)
您可以简化代码并改善代码的随机性,如下所示:
$firstlink = mt_rand(10000,99999) . mt_rand(10000,99999);
$secondLink = mt_rand(10000,99999) . mt_rand(10000,99999);
echo "INSERT INTO userAccount
(Category,Fname,LName,firstlink,secondLink,AccDate)
VALUES ( '" . $cat . "',
'" . $fname . "',
'" . $lname . "',
" . $firstlink . ",
" . $secondLink . ",
'" . date('Y-m-d g:i:s',time()). "');"
PHPFiddle:http://phpfiddle.org/main/code/6nf-wpk
这将通过制作两个随机的5位数代码并将它们连接在一起来构建随机的10位数代码。更简单,更容易遵循更少的部件组成。它必须用两个mt_rand()来完成,因为可能的最大数量是2147483647.对于你正在使用的每个mt_rand()函数,你要阻止0成为该数字部分的第一个数字,因为你'在1到9之间开始第一个数字。
如果您不关心第一个数字只有1或2(永远不会是3-9或0),您只需使用
$firstlink = mt_rand(1000000000,2147483647); // random 10 digit number
$secondLink = mt_rand(1000000000,2147483647); // random 10 digit number
作为一般编码提示: