if语句无法在变量中检测到0

时间:2014-01-22 16:20:29

标签: php mysql

我刚刚回到我的大型网站项目,所以在我的php和mySQL学习中倒退了一步。我为该网站创建了一些搜索引擎。当它没有任何显示内容时,我很难让它显示“找不到结果”。出于某种原因,我无法察觉。它是包含多少条记录的$ rows变量。即使显示它显示为“0”,它似乎也不会在for循环中的if语句中被视为如此。当我做了var_dump时,它说int(0)。我做错了什么?

  $result=query($qstring, $db_hostname, $db_username, $db_password, $db_database);

  $rows = mysql_num_rows($result);

  echo 'Results found '.$rows;

  for ($j = 0 ; $j < $rows ; ++$j)
  {
    $row = mysql_fetch_row($result);
    if ($rows==0)
    {
       echo 'No results found';
    }
    else
    { 
       display_result($row[0],$row[1],$row[3],$row[4],$row[5]);
    }
  }

3 个答案:

答案 0 :(得分:0)

由于$ rows为0,因此不会输入您的for循环,因此永远不会到达if块。如果您将for循环更改为while循环,它将自行遍历您的结果,而无需检查$ rows。

尝试这种方法:

while($row = mysqli_fetch_row($result){
    // do stuff
}

你应该切换到mysqli。它完全兼容。您基本上只需在代码中添加“i”。

答案 1 :(得分:0)

代码中的修复:

$result=query($qstring, $db_hostname, $db_username, $db_password, $db_database);

$rows = mysql_num_rows($result);
if($rows>0)
{
  echo 'Results found '.$rows;    
  for ($j = 0 ; $j < $rows ; ++$j)
  {
       $r= mysql_fetch_row($result);
       display_result($r[0],$r[1],$r[3],$r[4],$r[5]);
   }
 }
else
{
    echo "No results found";
}

你也可以尝试这个

 $result=query($qstring, $db_hostname, $db_username, $db_password, $db_database);

     $rows = mysql_num_rows($result);
     if($rows>0)
     {
       echo 'Results found '.$rows;
       while ($r= mysql_fetch_row($result))
       {
           display_result($r[0],$r[1],$r[3],$r[4],$r[5]);
       }
      }
     else
     {
       echo "No results found";
     }

答案 2 :(得分:0)

看看你的循环。您说$rowsint(0)。循环做什么?它生成$j=0,然后继续循环,直到条件$j < $rows为假。除了...嘿,条件总是假的,所以它永远不会循环。

  for ($j = 0 ; $j < $rows ; ++$j)
  {
    #...
  }

要解决此问题,请检查循环外是否存在结果。