【发布时间】:2011-10-06 16:24:02
【问题描述】:
在php中生成8位字母数字随机数的最佳方法是区分大小写的? 我想用这个唯一的数字存储在mysql数据库中,并使其成为主键。
【问题讨论】:
-
如果它不必是限制为 8 位的字母数字,您可以简单地使用自动递增主键。
-
1) 没有理由这样做。 2) 没有人应该帮助你,因为你不接受任何答案。
在php中生成8位字母数字随机数的最佳方法是区分大小写的? 我想用这个唯一的数字存储在mysql数据库中,并使其成为主键。
【问题讨论】:
永远不要使用随机键作为主键。在大多数情况下,主键必须是唯一的,而随机数则不是。
例如
1 1 1 1 1 1 0 1
也是 8 位随机数生成器的有效输出。
您应该使用自动增量字段或生成器来确保您的主键确实是唯一的。
如果您想拥有一个可能是唯一的标识符并且某种随机尝试使用 mysql 工具,例如:http://dev.mysql.com/doc/refman/5.0/en/miscellaneous-functions.html#function_uuid
一个警告可能是多次重复插入。
【讨论】:
不是随机的,但如果您不希望您的 ID 是连续的,那么也许您可以以某种方式对其进行加密。请参阅以下关于同一主题的问题:Simple integer encryption
【讨论】:
您或许可以使用uniqid 函数。
但请确保您真的想这样做。 AUTOINCREMENT 列可能是更好的解决方案。
【讨论】:
我想您可以将项目中某个字段的哈希(md5() 或 sha1() 等)修剪为 8 个字符 - 尽管最终可能会发生冲突。
为什么不将主键字段设为 AUTOINCREMENT?为什么必须是 8 个字母数字字符?
【讨论】: