2011-09-12 77 views
0

如果我將if($comments_count == 0)更改爲if($comments_count == 1),它會回顯文本(如果有1條評論)。但恢復到== 0,該命令不會被執行。我嘗試在沒有評論的頁面上回顯$ comments_count的值,並且它說0。但是if-else忽略它並且不打印任何內容。如果語句在值爲零時不起作用(PHP)

這是代碼:

$query = "SELECT * FROM comments WHERE id = {$set_id}"; 
    $all_comments_set = mysql_query($query); 
    $comments_count = mysql_num_rows($all_comments_set); 

    while($comment = mysql_fetch_array($all_comments_set)) { 
     if($comments_count == 0) { 
      echo $comments_count; 
      echo "<div class='comments'><p>There are no comments to show right now. Be the first to comment!</p></div>"; 
     } else { 
      echo $comments_count; 
      echo "<div class='comments'> 
       <p class='commenter'><a href=''>".$comment['commentAuthor']."</a></p> 
       <p>".$comment['comment']."</p> 
       </div>"; 
     } 
    } 
+1

如果你已經知道你沒有評論,你肯定不想迭代那個'while'循環嗎? –

+0

確實如此,這是有道理的。 – catandmouse

回答

3

你需要移動if語句退出while循環。由於行數爲0,因此mysql_fetch_array調用不會返回結果,並且內部循環代碼將不會執行。

if($comments_count == 0) { 
     echo $comments_count; 
     echo "<div class='comments'><p>There are no comments to show right now. Be the first to comment!</p></div>"; 
} else { 
    while(....){ 
    } 
} 

作爲一個側面說明,如果你能你真的應該切換到使用prepared報表和mysqli或至少使用mysql_real_escape_string防止SQL注入攻擊逃避你的輸入。

0

可能是因爲如果沒有行mysql_fetch_array將返回false。