例如,当用户注册到我的网站时,我创建一个长度为40的唯一字符串,并将其插入数据库。然后,我们向新注册的用户发送一封电子邮件,其中包含一个URL形式的唯一字符串,这一切都很好。但是,如何创建和插入这个注册实体,以确保具有唯一属性的字段实际上是唯一的?
我目前的做法如下:
$key = '';
$repeat = true;
while ($repeat) {
$key = generate_hash(40);
$is_unique = (count($model->get_by_key($key)) === 0) ? true : false;
$repeat = ($is_unique) ? false : true;
}
// At this point I know the key is unique and can insert it...我对这段代码不满意,因为我试图在一般情况下避免while循环。有没有更好的方法来达到我在这里所做的?
底线是包含这些键的MySQL字段具有唯一的属性,我需要知道在插入这些键时不会发生唯一的违规行为。
发布于 2015-02-03 10:44:03
好吧,基本上你有两种方法。
发布于 2015-02-03 09:51:16
在that.In php的几乎每种语言中都有独特的id函数,
echo uniqid();发布于 2015-02-03 10:01:25
您可以生成256^40个不同的40个字符字符串.太阳会在你产生两个相同的字符串之前爆炸。
https://stackoverflow.com/questions/28295545
复制相似问题