PHP MySQL有没有任何方法可以从错误中获取列键


PHP MySQL Is there any way to get the column key from an error

我正在为一个网站创建一个注册系统。MySQL数据库具有唯一的字段,因此用户不能在同一电子邮件、用户名或电话号码上创建多个帐户。当数据重复时,会使用mysqli_error()返回错误,例如Duplicate entry'email@example.com对于密钥"EMAIL",其错误代码为1062。我想做的是,然后发送回用户以输入不同的电子邮件地址、用户名或电话号码,要做到这一点,我需要列的KEY,在这种情况下是"电子邮件"。从错误发送回中有任何方法可以做到这一步吗。感谢

您应该在插入之前获得检查查询,如下所示:

SELECT * FROM TABLE WHERE email = '$email' OR phone = '$phone' OR username = '$username'

然后您可以进行简单的检查并抛出异常/错误。

您应该添加验证规则:在保存到数据库之前,检查电子邮件、电话和用户名的唯一性。

select * from users where email = ?
select * from users where phone = ?

如果行存在,则向用户写入消息。否则创建新行。

此外,你应该在电话和用户名上有唯一的索引。如果您有一个大表(100k行以上),这是必要的,以避免缓慢的查询。

您应该添加验证规则:在保存到数据库之前,检查电子邮件电话用户名的唯一性。

select * from users where email = ?
select * from users where phone = ?

如果行存在,则向用户写入消息。否则创建新行。

此外,你应该在电话和用户名上有唯一的索引。如果您有一个大表(100k行以上),这是必要的,以避免缓慢的查询。