【发布时间】:2011-09-17 21:07:04
【问题描述】:
我想生成一个唯一的 4-6 字符长的 AlphaNumeric 字符串,以与每个记录(用户)一起保存在 db 中。 db 字段具有唯一索引,因此尝试保存预先存在的字符串会产生错误。现在我正在生成一个随机字符串并使用try-catch,所以当添加一条新记录时,如果它引发异常,我会生成另一个随机字符串并尝试再次保存,并且代码会继续尝试直到成功添加记录。整个解决方案不仅看起来很重而且很丑,所以我想改变它。我对优雅的解决方案感兴趣,因此欢迎任何帮助/指导。
【问题讨论】:
-
@JohnD 我知道如何生成随机字符串,但主要问题是添加优雅的方法 1)在 zend 框架中生成字符串和 2)确保随机字符串在数据库中唯一,如果它已经存在,则生成一个新的,直到找到一个唯一的字符串
-
由于它已经被索引,您可以(目前)生成 N 个键,然后在插入之前运行选择查询。然后,您可以在一次往返中找出哪些密钥已被使用,然后继续使用未使用的密钥再次尝试错误。不是真正的解决方案,但我没有找到我正在寻找的相关问题。
-
这个随机字符串是干什么用的?它是一些用户必须手动输入的字符串吗?它必须有4-6个字符吗?如果您用完了位(即,当所有可能的组合都已生成时)会发生什么?
标签: php zend-framework unique zend-db