我遇到了这种奇怪的问题。 rand()函数正确生成随机数。但是当它存储在数据库中时,数字就消失了,只有“8388607”号存储在MySQL数据库中。我发现这个问题真的很奇怪。
$passcode=rand();
echo $passcode; //prints random number correctly
$phone=$_GET['phone'];
$email=$_GET['email'];
$address=$_GET['address'];
$documentid=$_GET['documentid'];
$sql="insert into Transaction (date, amount, amountRs, passcode, isPaid, comment, clientid, receiverid) values ('$date','$amount','$amountRs','$passcode','no','$comment','$senderid[1]','$receiverid[1]')"; //stores "8388607" number in database
答案 0 :(得分:0)
8388607
是mediumint
(一个3字节的int)的最大值,这可能就是你的passcode
列的类型(你传给它一个字符串,MySQL转换回数字......)。任何大于8388607
的数字都将被裁剪为该值。在32位系统上,平均每256个只有1个随机数不会被裁剪。在64位系统上,每256 ^ 5 ...