为什么我的随机函数总是返回相同的数字?

时间:2021-04-29 19:59:22

标签: php mysql random integer

我有一个带有 PHP 的 ID 系统。它以这种方式生成一个 12 位的 ID:

// create a 12 digit ID
function createTwelveId(){
  $digit_1 = rand(0, 9);

  $digit_2 = rand(0, 9);

  $digit_3 = rand(0, 9);

  $digit_4 = rand(0, 9);

  $digit_5 = rand(0, 9);

  $digit_6 = rand(0, 9);

  $digit_7 = rand(0, 9);

  $digit_8 = rand(0, 9);

  $digit_9 = rand(0, 9);

  $digit_10 = rand(0, 9);

  $digit_11 = rand(0, 9);

  $digit_12 = rand(0, 9);

  $pre_twelve_id = $digit_1 . $digit_2 . $digit_3 . $digit_4 . $digit_5 . $digit_6 . $digit_7 . $digit_8 . $digit_9 . $digit_10 . $digit_11 . $digit_12;

  return $pre_twelve_id;
}

调用的时候是这样的:

$comment_ID = createTwelveId();

然后它以这种方式插入到我的数据库中:

//create comment
  $sentence = $connection->prepare("
    INSERT INTO comments (ID)
    VALUES (:ID)
");
$sentence->execute(array(
  ':ID' => $comment_ID
));

但是每次我在数据库上检查结果时,它总是插入这个:

004294967295

请注意在此列上我有 ZerofillUnsigned 值,这就是 int 开头有 2 个零的原因。当我删除 ZerofillUnsigned 值时,它会插入:

2147483647

它总是这样做。不是应该在数据库中插入一个随机整数而不是那两个数字吗?

如何阻止这种情况的发生,而不是插入真正的随机字符而不是那 2 个字符?

0 个答案:

没有答案