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

如何使用php和数据库验证电子邮件和用户名,每个都有两个不同的输出?,php,sql,database,Php,Sql,Database,我有点小问题。在我的注册表单中,用户必须输入用户名和电子邮件。我需要能够检查两者,同时为每一个提供单独的输出 例如: 现有用户名中的用户类型:该用户名已存在。 现有电子邮件中的用户类型:该电子邮件已存在。 现有用户名和电子邮件中的用户类型:该用户名已存在。该电子邮件已存在。 明白了吗?下面是我目前正在使用的代码。当我提交时,其他语句都不会运行。如果有人已经在网站上找到了这方面的文章,请建议我,因为我无法找到一个帮助我到目前为止 if ($db_found) { $uSQL = "

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

例如:

现有用户名中的用户类型:该用户名已存在。

现有电子邮件中的用户类型:该电子邮件已存在。

现有用户名和电子邮件中的用户类型:该用户名已存在。该电子邮件已存在。

明白了吗?下面是我目前正在使用的代码。当我提交时,其他语句都不会运行。如果有人已经在网站上找到了这方面的文章,请建议我,因为我无法找到一个帮助我到目前为止

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

这样试试看。您的代码似乎是正确的。但我宁愿从数据库本身使用count(),并在传递给SQL的参数中添加一个引号,以避免错误。同样在count(*)上使用单个列,如ID、username等。好的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";
        }
}

乍一看很好看。您确定$email和$username包含正确的输入吗


我的第一次尝试是对查询进行回显,然后在phpmyadmin中使用此查询来验证它是否正确。

True,缺少引号。;)是的,它们是正确的输入。我刚刚注意到的一件奇怪的事情是,如果我离开并回到页面,那么回声的语句就会出现。奇怪。这个问题还在吗?或者它现在起作用了。我真的弄明白了。那是因为我在错误的地方回音…只是一个愚蠢的错误。