PHP MySQL有没有办法从错误中获取列键

PHP MySQL有没有办法从错误中获取列键,php,mysql,database,error-handling,Php,Mysql,Database,Error Handling,我正在为一个网站创建一个注册系统。MySQL数据库具有唯一字段,因此用户不能在同一电子邮件、用户名或电话号码上创建多个帐户。当数据被复制时,使用mysqli_error()返回一个错误,例如复制条目'email@example.com'对于键'EMAIL',这有错误代码1062。我想做的是,然后将用户发送回以输入不同的电子邮件地址、用户名或电话号码,为此,我需要在本例中的“电子邮件”栏中输入键。是否有任何方法可以从错误发送回中执行此操作。 谢谢在插入之前,您应该先获得检查查询,如下所示: SEL

我正在为一个网站创建一个注册系统。MySQL数据库具有唯一字段,因此用户不能在同一电子邮件、用户名或电话号码上创建多个帐户。当数据被复制时,使用mysqli_error()返回一个错误,例如复制条目'email@example.com'对于键'EMAIL',这有错误代码1062。我想做的是,然后将用户发送回以输入不同的电子邮件地址、用户名或电话号码,为此,我需要在本例中的“电子邮件”栏中输入键。是否有任何方法可以从错误发送回中执行此操作。
谢谢

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

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

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

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

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+行),则有必要避免缓慢的查询。

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

select * from users where email = ?
select * from users where phone = ?
如果行存在-将消息写入用户。否则,创建新行


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

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

select * from users where email = ?
select * from users where phone = ?
如果行存在-将消息写入用户。否则,创建新行


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

不要使用不推荐的函数。删除
mysqli\u error()
函数(我的提示:仅用于调试,而不是公开使用。此消息让可能的攻击者知道您的系统易受攻击。)。将
电子邮件
用作主键会导致此错误。“选择*”绝对让我抓狂。永远不要使用它。它是惰性的,并且会导致问题-除了返回比需要多得多的数据之外,特别是在宽表中。不要使用不推荐使用的函数。删除
mysqli\u error()
函数(我的提示:仅将其用于调试,而不是公开。此消息会让可能的攻击者知道您的系统易受攻击。)。将
电子邮件
用作主键会导致此错误。“选择*”绝对让我抓狂。永远不要使用它。它是惰性的,并且会导致问题——此外,返回的数据比需要的多得多,特别是在宽表中。