如果声明无法正常工作

时间:2013-12-17 03:28:32

标签: php mysql if-statement ucp

这是我在这个伟大网页中的第一个主题

问题在于:

我正在编写UCP脚本(基于PHP和MySQL)。我想让它显示用户的状态,比如得分,金钱等等(是的,这是游戏的一部分)但是当我点击登录按钮时,没有任何反应只会删除所请求字段的内容。

在我做一些更改之前它正常工作(检查用户名是否存在)

以下是代码:

if (isset($_POST['login'])) 
{
    $hashedpass = hash('whirlpool', $password); 
    $query = "SELECT * FROM users WHERE Username = '$playername' AND Password = '$hashedpass'";
    $result = mysql_query($query);

    $num = mysql_num_rows($result);
    mysql_close();
    if($num != 0)
    {
        echo"Account doesn't exist!";
        header("Location: ucp.html");
    }
    else 
    {

        $name=mysql_result($result,$i,"UserName");

        $money=mysql_result($result,$i,"Money");

        $score=mysql_result($result,$i,"Score");

        $wantedlevel=mysql_result($result,$i,"WantedLevel");

        $adminlevel=mysql_result($result,$i,"AdminLevel");


        echo "<b>$name</b><br>Money: $money<br>Score: $score<br>Wanted Level: $wantedlevel<br>Admin Level: $adminlevel<br><br>";        

    }   
}
else if (isset($_POST['register'])) 
{
    header("Location: register.html");
}
else 
{
    header("Location: index.html");
}

2 个答案:

答案 0 :(得分:3)

if($num != 0)

更改为:

if($num == 0)

答案 1 :(得分:1)

这在这里根本不起作用,也不符合逻辑:

$num = mysql_num_rows($result);
mysql_close();
if($num != 0)
{
    echo"Account doesn't exist!";
    header("Location: ucp.html");
}

首先逻辑是错误的,如果$num不等于0,那么你的查询必须找到至少一个帐户。因此,您需要将if语句更改为:

if($num == 0){ //if 0 rows were found - the account was not found thus it doesn't exist
   echo "Account doesn't exist!";
}

请注意,我没有添加header("location: ucp.html");。您无法显示输出+将用户重定位到另一个页面。你要么做其中一个,要么就会收到错误/警告。

最后通过在末尾添加一个检查来检查您的MYSQL是否导致错误:

$result = mysql_query($query) or die(mysql_error());

最后提示,您应该避免使用mysql_*并查看mysqli_* or PDO最佳解释: Why shouldn't I use mysql_* functions in PHP?