我的网站有一个部分为每个帖子生成一个唯一的 ID,然后将其发送到数据库。问题是生成的 ID 总长度为 16 个字符,我只需要 id 为 6 个字符。
这是用于生成 ID 的代码:
$order_id = uniqid(rand(10,1000), false);
有什么方法可以完成这样的改变吗?
为什么不在数据库中使用 auto_incremental 呢?所以第一个 id 是 1,然后是 2,依此类推。如果您只需要 6 位数字,这将产生 999 999 个不同的键。
此处先前接受的答案(substr()
用于从 中获取前 6 个字符uniqid()
)不是 100% 安全的。uniqid
将产生一个唯一的 id,其中整个 id 都是唯一的。通过删除这些字符,您最终可能会得到重复。
正如OptimusCrime上面所说,您可以在数据库中使用 auto_increment 和 PHP 函数str_pad。例如:
<?php
$input = 5;
echo str_pad($input, 6, "0", STR_PAD_LEFT);
上面的代码将生成 6 位字符串,因此您可以使用函数来获取任何您想要的字符串:
000005