我有一个小问题。与我的注册形式,用户必须输入用户名和电子邮件。我需要能够检查两者,同时为每个提供单独的输出。
例如:已存在用户名中的用户类型:该用户名已经存在
User types in existing email:该email已经存在
已存在用户名和电子邮件中的用户类型:该用户名已存在。
明白了吗?下面是我到目前为止使用的代码。当我提交时,两个else语句都不运行。如果有人已经在网站上找到了这方面的文章,请建议给我,因为到目前为止我还没有找到一篇可以帮助我的文章。
if ($db_found) {
$uSQL = "SELECT * FROM login WHERE username = $username";
$uresult = mysql_query($uSQL);
$unum_rows = mysql_num_rows($uresult);
$eSQL = "SELECT * FROM login WHERE email = $email";
$eresult = mysql_query($eSQL);
$enum_rows = mysql_num_rows($eresult);
if ($unum_rows > 0) {
$errorMessage = "";
}
else {
echo "Username Already Exists";
}
if ($enum_rows > 0) {
$errorMessage = "";
}
else {
echo "Email Already Exists";
}
第一眼看上去不错。您确定$email和$username包含正确的输入吗?
我的第一次尝试是在查询上做一个echo,然后在phpmyadmin中使用这个查询来验证它是否正确。
试试这样做。你的代码似乎是正确的。但我宁愿使用来自数据库本身的count(),并在传递给SQL的参数中添加单引号以避免错误。另外,在count(*)上使用单列,如ID,用户名等,SQL只调用1列,而不是*,这意味着所有列。
if ($db_found) {
$uSQL = "SELECT count(username) as total FROM login WHERE username = '$username';";
$uresult = mysql_query($uSQL);
$unum_rows = mysql_fetch_array($uresult);
if ($unum_rows['total'] > 0) {
$errorMessage = "";
}
else {
echo "Username Already Exists";
}
$eSQL = "SELECT count(email) as total FROM login WHERE email = '$email';";
$eresult = mysql_query($eSQL);
$enum_rows = mysql_fetch_array($eresult);
if ($enum_rows['total'] > 0) {
$errorMessage = "";
}
else {
echo "Email Already Exists";
}
}