创建独特的随机代码 - PHP / MySQL

时间:2013-01-18 08:07:08

标签: php unique

我必须为我的数据库中的每个“公司”创建唯一代码。

我认为可行的唯一方法是使用rand()创建一个随机数,然后检查数据库中此“公司”的编号是否存在,如果它确实重新创建。

我的问题是:有没有更好的方法来做到这一点 - 一种更有效的方法。好像我正在创建10 000个代码,并且数据库中已有50万个代码,它将逐渐变慢和变慢。

有关更好的方法的任何想法或提示吗?

编辑:

对不起,也许我可以解释得更好。代码不会同时生成,可以每天/每月/每年创建一次。

另外,我需要能够定义代码的字符,例如,alpha numberic或number only

3 个答案:

答案 0 :(得分:5)

我建议您使用“通用唯一标识符”:http://en.wikipedia.org/wiki/Universally_unique_identifier为每个公司生成随机代码。通过这种方式,您可以避免检查数据库是否有重复项:

  

任何人都可以创建UUID并使用它来识别某些内容   合理的信心,相同的标识符永远不会   无意中由任何人创建以识别其他内容。   因此,标有UUID的信息可以在以后组合成一个   单个数据库,无需解决标识符(ID)冲突。

在PHP中,您可以使用函数uniqid来实现此目的:http://es1.php.net/manual/en/function.uniqid.php

答案 1 :(得分:2)

MySQL的UUID功能应该有所帮助。 http://dev.mysql.com/doc/refman/5.0/en/miscellaneous-functions.html#function_uuid

INSERT INTO table (col1,col2)VALUES(UUID(), "someValue")

答案 2 :(得分:0)

如果代码只是整数,那么使用自动增量或获取当前最大值并开始递增

相关问题