3

我的网站有一个部分为每个帖子生成一个唯一的 ID,然后将其发送到数据库。问题是生成的 ID 总长度为 16 个字符,我只需要 id 为 6 个字符。

这是用于生成 ID 的代码:

$order_id  = uniqid(rand(10,1000), false);

有什么方法可以完成这样的改变吗?

4

2 回答 2

20

为什么不在数据库中使用 auto_incremental 呢?所以第一个 id 是 1,然后是 2,依此类推。如果您只需要 6 位数字,这将产生 999 999 个不同的键。


此处先前接受的答案(substr()用于从 中获取前 6 个字符uniqid())不是 100% 安全的。uniqid将产生一个唯一的 id,其中整个 id 都是唯一的。通过删除这些字符,您最终可能会得到重复。

于 2012-05-11T07:59:32.633 回答
0

正如OptimusCrime上面所说,您可以在数据库中使用 auto_increment 和 PHP 函数str_pad。例如:

<?php

$input = 5;
echo str_pad($input, 6, "0", STR_PAD_LEFT);

上面的代码将生成 6 位字符串,因此您可以使用函数来获取任何您想要的字符串:

000005
于 2020-12-24T06:27:20.967 回答