0

我花了几个小时试图完成这项工作。搜索中没有解决方案对我有帮助,所以我终于问了。

我要做的是:如果没有找到结果,则显示一条消息

这就是我所拥有的,目前它并没有令我沮丧。

    $sql = mysql_query("SELECT * FROM cover WHERE MATCH(keyword,description,categories) AGAINST('$search_key' in boolean mode) ORDER BY id DESC LIMIT $from , $perPage");

    $i=1;
    while($result = mysql_fetch_object($sql)) {

    $keyword = $result->keyword;
    $img = $result->img;
    $description = $result->description;

    if($img != null) { DO THIS;
    if($i==2) { require_once(dirname(__FILE__).'/page.php'); }
    $i++; }
    }
    if($img == null) { print "<center>No Results Found</center>"; }

我不知道如何使用mysql_num_rows(这是我所看到的网站上最流行的解决方案),它返回一个错误,我认为它不能很好地工作mysql_fetch_object($sql) 而且我不认为这样:$img = $result->img;也可以与 mysql_num_rows 一起使用。

我只是想找到一种方法来做到这一点,而无需修改括号内的任何内容,只需修改括号外的内容。


当我说 "NOT WORKING"时,我的意思是如果找不到结果,它不会显示应该显示的消息。我已经测试过if($img != null) { print "<center>No Results Found</center>"; },它工作正常,它显示了消息。但它似乎并没有以另一种方式工作,我现在只是感到困惑。

4

4 回答 4

1

如果您对 mysql_num_rows 有疑问,请查看您的索引:

$i = 1;

如果没有结果,则循环后的值仍为 1,因此您需要检查 AFTER while 循环:

if($i == 1) { print "<center>No Results Found</center>"; }
于 2012-06-06T11:17:10.863 回答
0

以下将起作用:

$sql = mysql_query("SELECT * FROM cover WHERE MATCH(keyword,description,categories) AGAINST('$search_key' in boolean mode) ORDER BY id DESC LIMIT $from , $perPage");
if(mysql_num_rows($sql) > 0)
{
    $i=1;
    while($result = mysql_fetch_object($sql)) 
    {
        $keyword = $result->keyword;
        $img = $result->img;
        $description = $result->description;

        if($img != null) 
        { 
            DO THIS;
            if($i==2) 
            { 
                require_once(dirname(__FILE__).'/page.php'); 
            }
            $i++; 
        }
    }
}
else
{ 
    print "<center>No Results Found</center>"; 
}

$result当您可以直接使用时,我看不出为什么要将值存储到单独的变量中$result->keyword

于 2012-06-06T11:25:34.633 回答
0

您的问题是 while() 循环仅在返回结果时发生,因此在此内部永远不会引发 NULL 比较。

我建议您需要像这样重新排序代码:

$sql = mysql_query("SELECT * FROM cover WHERE MATCH(keyword,description,categories) AGAINST('$search_key' in boolean mode) ORDER BY id DESC LIMIT $from , $perPage");
$numResults = mysql_num_rows($sql);
if ($numResults === 0) { // mysql_query returned no results
    print "<center>No Results Found</center>";
} else { 
    require_once(dirname(__FILE__).'/page.php');
    while($result = mysql_fetch_object($sql)) 
    {
        $keyword = $result->keyword;
        $img = $result->img;
        $description = $result->description;
    }
}
于 2012-06-06T11:20:04.137 回答
0

你可以像这样使用它

  if(mysql_num_rows($result) <= 0);
    {
    echo 'There is no result';
    }
    else
     {
       your code
    }

这是您的代码中的实现

 $sql = mysql_query("SELECT * FROM cover WHERE MATCH(keyword,description,categories) AGAINST('$search_key' in boolean mode) ORDER BY id DESC LIMIT $from , $perPage");

    $i=1;
    $result = mysql_fetch_object($sql);
    if(mysql_num_rows($result) > 0 )
    {
    while($result) {

    $keyword = $result->keyword;
    $img = $result->img;
    $description = $result->description;

    if($img != null) { DO THIS;
    if($i==2) { require_once(dirname(__FILE__).'/page.php'); }
    $i++; }
    }
    if($img == null) { print "<center>No Results Found</center>"; }
    }
   else
     {
         echo 'There is no result';
     }
于 2012-06-06T11:15:32.767 回答