如何限制插入数据库的特定电子邮件?

时间:2012-09-05 17:37:34

标签: php mysql

我正在寻找最熟练的方法,只允许在用户使用其唯一的电子邮件创建帐户时,只将特定电子邮件插入我的数据库一次。我假设它是一个简单的if语句,如果尝试会触发错误消息。

这只能通过php实现吗?还是有mysql快捷方式来实现这个目标?

2 个答案:

答案 0 :(得分:5)

只需将UNIQUE索引添加到数据库中的电子邮件字段即可。 请参阅this


更新

好的,现在你已经更准确地解释了你的问题,我建议你仍然将电子邮件字段UNIQUE保留在数据库中,但为试图创建的用户添加一些用户友好的通知使用现有电子邮件地址的帐户。您可以这样做,就像向他们显示一个弹出窗口,说明该地址已被使用,建议他们重置密码,以防他们忘记密码等。

答案 1 :(得分:2)

如果您只想在数据库表中使用唯一的电子邮件地址,请在存储电子邮件地址的字段上创建唯一索引。这将自动防止任何重复项插入表中。

在应用程序层,最佳做法是在插入新记录之前检查数据库以获取记录,或者只是尝试将记录插入数据库并处理因尝试插入重复密钥而导致的任何错误。

我个人更喜欢后者,因为在大多数情况下只需要DB上的单个查询(插入查询),并且无论如何我处理所有情况下的DB错误条件,所以只需添加一点逻辑来确定是否有错误是由于重复的密钥插入尝试非常简单。