2011-09-12 3 views
0

if($comments_count == 0)if($comments_count == 1)に変更すると、1つのコメントがある場合はテキストをエコーし​​ます。しかし、== 0に戻すと、コマンドは実行されません。私はコメントがないページに$ comments_countの値をエコーアウトしようとしましたが、それは0と言います。しかし、if-elseはそれを無視して何も出力しません。値がゼロのときに文が動作しないif(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

あなたはwhileループの外にif文を移動する必要があります。行数が0なので、mysql_fetch_array呼び出しは結果を返さず、内部whileループコードは実行されません。サイドノートとして

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の使用に切り替える必要があるか、少なくともSQLインジェクション攻撃を防ぐためにmysql_real_escape_stringを使用して、あなたの入力をエスケープすることができます。

0

おそらく、行がない場合、mysql_fetch_arrayはfalseを返すためです。

関連する問題