当用户在我的网站上注册时,我希望能够检查我的sql表/记录,看看他们注册的电子邮件和用户名是否已被使用。下面是我用于返回错误的代码,如果任何字段留空:
//Input Validations
if($user_name == '') {
$errmsg_arr[] = 'Username missing';
$errflag = true;
}
if($user_password == '') {
$errmsg_arr[] = 'Username Password missing';
$errflag = true;
}
if($insp_name == '') {
$errmsg_arr[] = 'Inspector Name missing';
$errflag = true;
}
if($insp_email == '') {
$errmsg_arr[] = 'Inspector Email missing';
$errflag = true;
}
if($confirm_password == '') {
$errmsg_arr[] = 'Confirm Password missing';
$errflag = true;
}
if ($user_password != $confirm_password) {
$errmsg_arr[] = 'The password which you have entered do not match';
$errflag = true;
}
//If there are input validations, redirect back to the registration form
if($errflag) {
$_SESSION['ERRMSG_ARR'] = $errmsg_arr;
session_write_close();
header("location: accountinfo.php");
exit();
}
我尝试过这样的东西来检查我的sql:
$result=mysql_query("SELECT email FROM members WHERE `email` = '$insp_email'" );
$exist = mysql_fetch_row($result);
if ($exist == 1) {
$errmsg_arr[] = 'That email is already registered.';
$errflag = true;
}
但这不起作用。我知道这可能是一个简单的解决方案,我只是看不到它哈哈。我想要检查sql的电子邮件和用户名。如果这两个中的任何一个已经存在于sql中,那么我想重定向回注册页面,并显示一条消息“该电子邮件或用户名已在使用中”
谢谢!
好的,我现在正在使用它,这正是我想要的。但是我注意到的另一个问题是,当它重定向回注册页面时是否存在错误(空白字段,用户名已经在使用中),它不会显示错误或解释用户被重新发送回注册页面的原因。我的代码再次出现在下面:
//If there are input validations, redirect back to the registration form
if($errflag) {
$_SESSION['ERRMSG_ARR'] = $errmsg_arr;
session_write_close();
header("location: accountinfo.php");
exit();
}
答案 0 :(得分:1)
$result=mysql_query("SELECT email FROM members WHERE `email` = '$insp_email' or username='$username' LIMIT 1" );
$exist = mysql_fetch_row($result);
if ($exist !==false ) {
$errmsg_arr[] = 'That email is already registered.';
$errflag = true;
}
答案 1 :(得分:0)
尝试这样的事情:
select count(*) from yourtable where username = 'jimmy' and email = 'jim@aol.com';
如果结果= 0则该组合不存在,否则确实存在。
但是,您最有可能只检查用户名,因为您不希望多个用户拥有相同的用户名,是吗?
如果是这样,你可以像上面那样做,但使用OR:
select count(*) from yourtable where username = 'jimmy' or email = 'jim@aol.com';
希望这有帮助!
修改强>
您还可以在用户名列和电子邮件列上放置唯一约束,当您尝试插入重复记录时,它会抛出并出错。然后,您可以处理错误。除了上述内容之外,您还应该这样做,以确保在不使用UI的情况下不会创建重复记录。
答案 2 :(得分:0)
使用mysql_num_rows。
http://php.net/manual/en/function.mysql-num-rows.php
if (mysql_num_rows($result) > 0)
{
$errmsg_arr[] = "That email is already registered.";
$errflag = true;
etc...
而且,由于您实际上尝试进行一些输入验证,因此您应该考虑针对 SQL注入保护代码。
http://php.net/manual/en/function.mysql-real-escape-string.php
在WHERE子句中使用OR来检查电子邮件和用户名。
$result = mysql_query("SELECT email FROM members WHERE `email` = '$insp_email' OR `username` = '$user_name'");