即使数据库中没有值,PHP $ result = mysql_query($ query)也会返回true

时间:2014-04-26 23:05:08

标签: php

我有以下代码。

$query = "SELECT HealthStatus FROM healthstatus where HealthStatus=$HealthStatus";

    $result = mysql_query($query);

    echo $HealthStatus;

    if($result = false)
            {
              //do something
            }

            else
            {
              //print value already exists
            }

执行代码时,我没有收到任何错误或警告。但是,即使数据库中存在$ HealthStatus,if部分也会被执行。当我给echo $ HealthStatus时,正确打印获取的值。 我尝试过使用if(!$ result)。这也行不通。有人可以帮助我。

2 个答案:

答案 0 :(得分:2)

您必须使用mysql_num_rows来了解查询是否返回任何行,例如: -

if($result && mysql_num_rows($result))
{
  // a row exists
}
else
{
  // do something
}

如果HealthStatus是一个字符串,它需要用引号括起来,例如: -

$query = "SELECT HealthStatus FROM healthstatus where HealthStatus='".$HealthStatus."'";
$result = mysql_query($query);

if($result && mysql_num_rows($result))
{
  // a row exists
  $row=mysql_fetch_array($result);
  echo "Health status was ".$row["HealthStatus"];
}
else
{
  // do something
  echo "There were no rows found";
}

答案 1 :(得分:0)

要了解收到的行数,请使用mysql_num_rows函数。

if(mysql_num_rows($result) > 0) {

} else { 

}

此外,您的if

中存在错误
if($result = false)
        {
          //do something
        }

        else
        {
          //print value already exists
        }

您在if声明中为$ result指定了false。

您必须使用if($result == false)

为避免此类错误,您可以更改订单:

if(false == $result)

这会有效,但是这个:

if(false = $result)

会导致错误。

希望,这会有所帮助。