我有一个类将用户从注册表单插入数据库。我正在插入4件事:用户名,密码,盐和电子邮件。我正在使用errno 1062来检查重复的条目。但我需要检查具体的重复条目。例如,我有这个逻辑检查errno 1062,但它确实不是特定于被检查的用户名,它只是检查一个errno并假设它是重复的用户名。
if ($stmt->affected_rows == 1) {
$this->success = "$this->username has registered. You can now log in.";
} elseif ($stmt->errno == 1062) {
$this->errors[] = "$this->username is already in use. Please chose another.";
} else {
$this->errors[] = 'Sorry, there was an issue with the database.';
}
我的问题是,如何使用errno 1062检查用户名,电子邮件或两者?看起来像errno 1062只是检查任何重复的条目。
答案 0 :(得分:0)
errno只返回一个整数,没有关于发生了什么错误的其他信息,但您应该能够使用错误获取更多信息。
根据the manual,如果你有一个errno 1062,那么错误应该是这种格式的字符串:
键'%s'重复输入'%s'
您可以使用普通的PHP字符串函数解析该字符串以获取所需的数据。如果您有多个错误,它只会“抱怨”它找到的第一个错误(至少在我的服务器上),所以请注意,您可能最终要求用户修复一件事,然后再回到另一件事,等等。 我知道改进的唯一方法是运行单独的简单查询:
SELECT COUNT(*) FROM table WHERE email = 'test@email.com'
P.S。你真的想要阻止重复密码吗?