оператор if не работает, когда значение равно нулю (PHP) - PullRequest
0 голосов
/ 12 сентября 2011

Если я изменю if($comments_count == 0) на if($comments_count == 1), это перекликается с текстом (если есть 1 комментарий).Но вернитесь обратно к == 0, команда не будет выполнена.Я попытался отобразить значение $ comments_count на странице, на которой нет комментария и указано 0. Но if-else игнорирует его и ничего не печатает.

Это код:

$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>";
        }
    }

Ответы [ 2 ]

3 голосов
/ 12 сентября 2011

Вам необходимо вывести оператор if из цикла while. Так как количество строк равно 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(....){
    }
}

В качестве дополнительного примечания, если вы действительно можете переключиться на использование подготовленных операторов и mysqli или по крайней мере избежать ввода с помощью mysql_real_escape_string, чтобы предотвратить атаки SQL-инъекций.

0 голосов
/ 12 сентября 2011

Вероятно потому, что если строк нет, mysql_fetch_array вернет false.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...