php - 为什么我的随机函数总是返回相同的数字?
问题描述
我有一个带有 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
请注意我在此列上Zerofill
的Unsigned
值,这就是 int 开头有 2 个零的原因。当我删除Zerofill
andUnsigned
值时,它会插入:
2147483647
它总是这样做。难道不应该在数据库中插入一个随机整数而不是那两个数字吗?
我怎样才能阻止这种情况发生,而不是那些 2,插入真正的随机字符?
解决方案
推荐阅读
- angularjs - 如何使用 Authorize.net 在灯箱中显示付款方式 接受 Ionic 中的托管付款?
- yugabyte-db - 如何使用 systemd 运行 YugabyteDB?
- r - 对行进行分组,直到满足某些条件
- splunk - 如何检查 splunk 是否已收到来自 100 个不同主机的日志
- docker - 我如何确定我从 docker 中提取了一个受信任的图像?
- python - 如何将 csv 转换为 json 并用“|”分隔
- elasticsearch - searchick reindex 返回 "Faraday::TimeoutError","Net::ReadTimeout"
- javascript - 仅显示 React 中的现有元素
- r - 线性混合效应模型:如何解释估计
- c - 我把Gstreamer脚本文件改成C有什么区别?我如何解决它..?