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でも機能します。

私は、括弧の内側、外側の括弧だけを変更することなく、これを行う方法を見つけようとしています。


「動作していません」と言うときは、結果が見つからない場合に表示されるはずのメッセージが表示されないことを意味します。私はテストしましたif($img != null) { print "<center>No Results Found</center>"; }、そしてそれはうまく働きます、それはメッセージを示します。しかし、それは他の方法では機能しないようで、私は今混乱しています。

4

4 に答える 4

1

mysql_num_rowsに疑問がある場合は、インデックスを確認してください。

$i = 1;

結果がない場合、ループ後の値は1のままなので、whileループの後で確認する必要があります。

if($i == 1) { print "<center>No Results Found</center>"; }
于 2012-06-06T11:17:10.863 に答える
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 に答える
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

以下が機能します。

$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 に答える