我有一个带有 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
和 Unsigned
值时,它会插入:
2147483647
它总是这样做。不是应该在数据库中插入一个随机整数而不是那两个数字吗?
如何阻止这种情况的发生,而不是插入真正的随机字符而不是那 2 个字符?