Mysql_fetch_object()SQL查询(如何:如果没有找到结果,显示“消息”)?

时间:2012-06-06 11:12:10

标签: php sql

我花了好几个小时努力完成这项工作。搜索的解决方案没有帮助我,所以我终于要求了。

我要做的是:如果找不到结果,则显示消息

这就是我所拥有的,目前我的工作令我失望。

    $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。

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


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

4 个答案:

答案 0 :(得分:1)

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

$i = 1;

如果没有结果,那么循环后的值仍然是1,所以你需要在循环时检查AFTER:

if($i == 1) { print "<center>No Results Found</center>"; }

答案 1 :(得分: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';
     }

答案 2 :(得分: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;
    }
}

答案 3 :(得分: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的值存储到单独的变量中。