如何用php和数据库验证电子邮件和用户名,每个都有两个不同的输出


How do you verify email and username with php and database with two different outputs for each?

我有一个小问题。与我的注册形式,用户必须输入用户名和电子邮件。我需要能够检查两者,同时为每个提供单独的输出。

例如:

已存在用户名中的用户类型:该用户名已经存在

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";
        }
}