我刚刚开始学习如何使用SQL数据库。我在youtube上学习了一个教程;但是,似乎我在连接数据库时遇到了问题。我在cPanel中使用phpMyAdmin和MySQL。
当我测试登录页面时,我输入在phpMyAdmin中手动设置的用户帐户的信息,但它一直返回错误“找不到您输入的用户名”
我做错什么了?我知道我输入了正确的数据库用户名和密码以及正确的数据库名称。
这是my connect.php:

<?php

mysql_connect("localhost", "username", "password");
mysql_select_db("databasename");

?>

这是我的login.php:
if ($_POST['loginbtn'])
{
$user = $_POST['user'];
$password = $_POST['password'];

if ($user)
{
    if ($password)
    {
        require("connect.php");

        $password = md5(md5("additional".$password."additional"));

        // echo "$password";

        $query = mysql_query("SELECT * FROM users WHERE username='$user'");
        $numrow = mysql_num_rows($query);
        if (!numrows == 1)
        {
            $row = mysql_fetch_assoc($query);

            $dbid = $row['id'];
            $dbuser = $row['username'];
            $dbpass = $row['password'];
            $dbactive = $row['active'];

            if ($password == $dbpass)
            {
                if ($dbactive == 1)
                {
                    //set session info
                    $_SESSION['userid'] = $dbid;
                    $_SESSION['username'] = $dbuser;

                    echo "You have been logged in as <b>$dbuser</b>. <a href='./member.php'>Click here</a> to go to the member page.";
                }
                else
                    echo "You must activate your account before you can logon. $form";
            }
            else
                echo "You did not enter the correct password. $form";
        }
        else
            echo "The username you entered was not found. $form";

        mysql_close();
    }
    else
        echo "You must enter your password. $form";
}
else
    echo "You must enter your username. $form";
}
else
echo $form;

?>

最佳答案

正如我和@Fred ii-注意到的,您可能的问题在于以下两行:

$numrow = mysql_num_rows($query);
if (!numrows == 1)

第一行很好,但您可能需要$numrows
第二行是问题所在。
目前,您的if相当于:
if( !(defined('numrows') || 'numrows') == 1 )

或者更准确地说:
if( defined('numrows') )
{
    if( !numrows == 1 )
    {
        // [code here ...]
    }
}
else if( !'numrows' == 1 )
{
    // [same code here ...]
}

这不是你想要的。(未定义未知常量时,PHP会将其隐式转换为字符串)
此外,还要检查numrows的否定是否为1。发生这种情况的唯一方法是当numrows为0时,但是您的代码将继续,就像它成功一样。
你应该使用这个:
$numrows = mysql_num_rows($query);
if ($numrows)

或更短:
if ( mysql_num_rows($query) )

为什么我不做?
好吧,任何不同于$numrows==1的数字都等同于布尔值0,因此,使该检查几乎无用。
它只对可读性有帮助。

10-07 23:44