注册表要求提供 用户名和电子邮件地址。数据通过验证后,它被添加到accounts
表中。它存储用户名、密码和电子邮件地址等数据。如果用户名已被使用,用户将收到通知,并且不会将任何数据添加到表中。如果立即通知用户电子邮件地址已在表中,则将其视为安全问题。建议的解决方案是始终发送验证电子邮件,如果输入的用户名已经存在,则电子邮件将显示“此电子邮件地址已被使用”(当然不会提供激活链接)。
问题是,当它现在工作时,如果INSERT
查询未能将数据插入表中,则会显示消息“用户名已采用”。这可能是错误的,因为电子邮件地址在表中设置为唯一,因此如果输入相同的电子邮件地址,查询将失败。我不能再发送一封验证邮件说“这个邮箱地址已经被使用了”,因为在包含该邮箱地址的表格中没有记录。
如何重新设计系统以使其正常工作?
我正在使用 MySQL,该表accounts
具有主键username
唯一键e-mail
和属性password
和activation
.
if(mysqli_stmt_execute($createAccount))
echo 'Username available!';
else
echo 'Username unavailable!';
在 SQL 中是否有某种方法可以检查为什么无法将查询插入到表中?例如,它可以判断哪个属性具有重复值吗?
如果我的问题不清楚,请告诉我。