如何在mysql数据库中不存在无限时间生成唯一的字母数字字符串?

时间:2017-11-08 11:58:21

标签: php mysql

我需要通过检查mysql数据库来生成唯一的字母数字字符串。该字符串可以是A-Z和0-9组合。我尝试了floor()和rand()函数,但是如果大量用户尝试一次,就有可能重复相同的字符串。

2 个答案:

答案 0 :(得分:0)

如果您生成随机数字/字符串,则始终可能会获得相同的字符串。但是,如果您生成16个字符(或更多)长度的字符串,则不太可能获得相同的字符串。

您可以生成随机字符串,然后检查它是否存在于数据库中。在极少数情况下,您可以在while循环中生成新的随机字符串,直到找到一个空闲的字符串。正如我之前所写的,即使是带有[A-Z0-9]的16个字符长度的文本也几乎不可能重复。它有36 ^ 16种可能的组合。

你也可以预生成让1000个字符串,按随机顺序排序并放入数据库。之后,您只需从数据库中选择第一个未提供的字符串。

答案 1 :(得分:0)

您可以使用uniqid()函数,该函数基于生成字符串当前时间。如果你想要大写字母,请使用如下:

strtoupper(uniqid());