2012-06-06 67 views
0

我花了數小時試圖做這項工作。搜索解決方案沒有幫助我,所以我終於問。Mysql_fetch_object()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這個(這是我所看到的是網站上最流行的解決方案),它會返回一個錯誤,我想它不」 t與mysql_fetch_object($sql)很好地工作?而我不認爲這個:$img = $result->img;也可以與mysql_num_rows一起使用。

我只是試圖找到一種方法來做到這一點,而無需修改括號內的任何內容,只是外面的。


當我說「不工作」,我的意思是它並不表明是爲了顯示,如果沒有找到結果的消息。我已經測試了if($img != null) { print "<center>No Results Found</center>"; },它工作正常,它顯示了消息。但它似乎不能以另一種方式工作,現在我只是感到困惑。

回答

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

+0

謝謝加文,這是**正是我正在尋找**!我發現了一種通過@Kasyx方法獲得我想要的東西的不同方式,但這是我的問題所在,並且您已經回答了這個問題。關於使用'$ result->關鍵字'時使用不同的變量,以及我以這種方式購買了腳本,並且我只是不想再經過或修改括號內的大部分內容。感謝您的時間! – Mafia

+0

很高興聽到它幫助你。 ;) – Gavin

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'; 
    } 
+0

它應該是'0 === mysql_num_rows($ sql)' – Lumbendil

+0

@Pramod,謝謝,但是我不認爲這樣可以工作:'$ img = $ result-> img;',並且我用了很多,代碼在括號內非常龐大,所以我不想再碰到任何東西。我只是想找到一種方法來使這些括號外面的工作。 – Mafia

+0

請糾正雙美元符號 –

1

執行。如果你有疑問與mysql_num_rows看看你的索引:

$i = 1; 

如果沒有結果,循環後的值仍然是1,所以你需要檢查AFTER while循環:

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

謝謝@Kasyx,這個工作!我之前也嘗試過這樣做,但無法弄清楚方法,我正在嘗試'if($ 1 == 0)'。感謝你,終於把這件事情從我的腦海中解救出來。 **:o)** – Mafia

+1

我很高興,它幫助:) – Kasyx

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; 
    } 
} 
相關問題