MySQL不是';t只为一个用户名找到一行,但它存在


MySQL isn't finding a row just for one username but it exists?

我有一个用于登录的PHP/MMySQL脚本,它对其他人很好,但对我的用户名不起作用,它告诉我找不到使用该用户名的帐户。我甚至试着在数据库的users表中创建一个新行,它登录得很好,只是由于某种原因无法使用我的名字。

 if($submit)
   {
        if($username && $password)
        {
            $passhash = strtoupper(hash("whirlpool", $password));
            $query = mysql_query("SELECT name, password FROM users WHERE name = '$username'");
            if(mysql_num_rows($query) == 1)
            {
                while($row = mysql_fetch_assoc($query))
                {
                    $dbusername = $row['name'];
                    $dbpassword = $row['password'];
                    if($username == $dbusername && $passhash == $dbpassword)
                    {
                        $_SESSION['username'] = $dbusername;
                        echo header('location: profile.php');
                    }
                    else echo "The password you entered was incorrect.";
                }
            }
            else echo "No account was found with that name!";
        }
        else echo "You must enter your name and password!";
    }

它只是回应道:"没有找到那个名字的账户!"。

当我把网站上传到网络主机上时,这种情况才开始发生,它在本地运行良好。

我想你的问题在于引号,如果你使用简单的引号,它会将变量作为文本。

$query = mysql_query("SELECT name, password FROM users WHERE name = '".$username".'");

无论如何,我建议您小心处理SQL中使用的所有变量,以避免SQL注入。