PHP Mysql If语句不起作用

min*_*tuz 2 php mysql

有一个问题,如果行等于0,则不调用else语句.如果我在网站上输入正确的详细信息,则会满足第一个条件并显示xml,但是如果输入了错误的详细信息,则不会显示错误xml.

echo "<users>"; 
$result = mysql_query("SELECT * FROM `numbers` WHERE `email` = '".$email."' AND `password` = '".$password."'") or die('Invalid query: ' . mysql_error());

if (!$result) die('Invalid query: ' . mysql_error());
while ($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
    if(mysql_num_rows($result) != 0)
    {
        echo "<usercallback>";
        echo  "<id>".$row['id']."</id>";
        //echo  "<number>".$row2['number']."</number>";
        //echo  "<gender>".$row2['gender']."</gender>";
        //echo  "<relationship>".$row2['relationship']."</relationship>";
        echo  "</usercallback>";
    }
    else
    {
        echo "<usercallback>";
        echo  "<id>error</id>";
        echo  "</usercallback>";
    }
}

echo "</users>";
Run Code Online (Sandbox Code Playgroud)

mit*_*esh 6

实际上你必须将if mysql_num_rows检查放在while块之外

echo "<users>"; 
$result = mysql_query("SELECT * FROM `numbers` WHERE `email` = '".$email."' AND `password` = '".$password."'") or die('Invalid query: ' . mysql_error());


if(mysql_num_rows($result) != 0)
    {
    while ($row = mysql_fetch_array($result, MYSQL_ASSOC))
        {       
        echo "<usercallback>";
        echo  "<id>".$row['id']."</id>";
        //echo  "<number>".$row2['number']."</number>";
        //echo  "<gender>".$row2['gender']."</gender>";
        //echo  "<relationship>".$row2['relationship']."</relationship>";
        echo  "</usercallback>";
        }
    }
    else
    {
        echo "<usercallback>";
        echo  "<id>error</id>";
        echo  "</usercallback>";
    }

echo "</users>";
Run Code Online (Sandbox Code Playgroud)