我只是在寻找最熟练的方法,只允许在用户使用其唯一电子邮件创建帐户时将特定电子邮件插入我的数据库中一次。我假设这是一个简单的 if 语句,如果尝试会触发错误消息。
这是否只能通过 php 实现,或者是否有 mysql 快捷方式来完成此操作?
只需将 UNIQUE 索引添加到数据库中的电子邮件字段。看到这个。
更新
好的,既然您已经更准确地解释了您的问题,我建议您仍然将电子邮件字段保留UNIQUE
在数据库中,但为尝试使用现有电子邮件地址创建帐户的用户添加一些用户友好的通知。您可以这样做,例如向他们显示一个弹出窗口,说明该地址已在使用中,建议他们重置密码以防他们忘记密码等。
如果您只想在数据库表中使用唯一的电子邮件地址,请在存储电子邮件地址的字段上创建唯一索引。这将自动防止将任何重复项插入到表中。
在应用程序层,最好的做法是在插入新记录之前检查数据库中的记录,或者只是尝试将记录插入数据库并处理因尝试插入重复键而导致的任何错误。
我个人更喜欢后者,因为在大多数情况下,只需要对 DB 进行一个查询(插入查询),并且无论如何我都会处理所有情况下的 DB 错误条件,所以只需添加一点逻辑来确定错误是否是由于重复键插入尝试非常简单。