【发布时间】:2013-08-27 04:01:32
【问题描述】:
我的数据库中有一个列是 int(11),有时我无法将用户名与 ids 数据库匹配,因为名称略有不同(即 John Doe 而不是 Johnathan Doe)。普通 ID 从 11000 范围开始,所以我想将他们的名字转换为整数并在前面加上 00 或其他东西,这样我就可以触发一个标志供某人查看和更新。我知道我可以使用str_pad 来获取 00,但我似乎无法生成一定数量的数字以使其名称有些独特。我知道重复的可能性很高,但我不确定我还能用primary/unique 的列做什么。任何帮助将不胜感激。
使用mt_rand 和str_pad 的示例:
str_pad(mt_rand(100000000,999999999),11,'00',STR_PAD_LEFT);
谁有更好的选择,可能使用名称字符串?
【问题讨论】:
-
这将如何帮助将用户名与 id 数据库匹配?如果名称不同,则 id 可能会不同。
-
您到底想要做什么?获取给定字符串名称的用户ID?如果是这样,那么您将遇到@Jack 提到的问题。您是否在问如何将字符串值插入到具有保证唯一 ID 的 MySQL 表中?最好使用 auto_increment 列来完成。还是完全是另外一回事?
-
我认为这很清楚。正常的 id 是 11000 我想做类似 01234467891 的东西,它将插入到代理名称有点独特的 int(11) 中。这将允许我找到以 0 开头的所有 id 并进行人工审查以修复
-
为什么不添加一个列,例如枚举
NeedsCheck,其值为Yes/No? -
这是一个我没有想到的选项,但从stackoverflow.com/a/362058/1626329 来看,我想远离枚举。不过谢谢!