Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何无限时间生成mysql数据库中不存在的唯一字母数字字符串?_Php_Mysql - Fatal编程技术网

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

Php 如何无限时间生成mysql数据库中不存在的唯一字母数字字符串?,php,mysql,Php,Mysql,我需要通过检查mysql数据库生成唯一的字母数字字符串。字符串可以是A-Z和0-9的组合。我有try floor()和rand()函数,但如果大量用户尝试一次,则有可能重复相同的字符串。如果生成随机数/字符串,则总是有可能获得相同的字符串。但是,如果生成16个字符(或更多)长度的字符串,则不太可能得到相同的字符串 您可以生成随机字符串,然后检查它是否存在于数据库中。在这种非常罕见的情况下,您可以在while循环中生成新的随机字符串,直到找到一个空闲字符串为止。正如我之前所写的,即使是带有[A-Z

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

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

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

您还可以预生成1000个字符串,按随机顺序对它们进行排序,然后放入数据库。然后,您只需从数据库中选择第一个未指定的字符串。

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

strtoupper(uniqid());

提示:
UUID()-