mysql_num_rows () дает значение BOOL - PullRequest
0 голосов
/ 04 февраля 2012

У меня есть этот запрос в моем PHP:

<?php
$comments_list = mysql_query("SELECT * FROM comments ORDER BY `date` DESC, `time` DESC LIMIT 5");
echo mysql_error();
if (mysql_num_rows($comments_list) != 0)
{
    echo('<ul>');
    while ($comment = mysql_fetch_array($comments_list))
    {
        echo('<li>'.substr($comment['content'],0,70).'</li>');
    }
    echo('</ul>');
}
else
{
    echo('<center>No comment.</center>');
}
?>

И он выдает эту ошибку, если моя таблица пуста:

Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\Program Files (x86)\EasyPHP-5.3.9\www\admin\index.php on line 101

EDIT: Я запрашивал LIMIT 5 до ORDER BY.Теперь это исправлено, и я добавил echo mysql_error(), как отредактировано в вопросе.

Ответы [ 2 ]

2 голосов
/ 04 февраля 2012

Вы не проверяете ошибки в своем запросе.Вам нужно , чтобы сделать это после вызова mysql_query(), потому что при ошибке запроса он вернет логическое значение false, и ваш сценарий будет ломаться именно так, как вы показываете.

Добавить проверку ошибок в ваш запрос.Как это сделать, описано в руководстве по mysql_query() или в этом справочном вопросе .

0 голосов
/ 04 февраля 2012

Поскольку $comments_list равно false, используйте mysql_error(), чтобы увидеть, что не так.

$comments_list = mysql_query("SELECT * FROM comments LIMIT 5 ORDER BY `date` DESC, `time` DESC");
if (!$comments_list ) {
    die('Invalid query: ' . mysql_error());
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...