首页 > 解决方案 > 为什么我的随机函数总是返回相同的数字?

问题描述

我有一个带有 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 个零的原因。当我删除ZerofillandUnsigned值时,它会插入:

2147483647

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

我怎样才能阻止这种情况发生,而不是那些 2,插入真正的随机字符?

标签: phpmysqlrandominteger

解决方案


推荐阅读