mysql_num_rows не работает - PullRequest
       34

mysql_num_rows не работает

0 голосов
/ 12 ноября 2009

это мой php код

$sql="SELECT * FROM table_name WHERE FROM_UNIXTIME(date, '%Y') = $q order by id desc";
$q = mysql_query($sql) or die(mysql_error().$sql);
$sql1="SELECT * FROM table_name WHERE FROM_UNIXTIME(date, '%Y') = $q";
$query=mysql_query($sql1);

это правильно собирает результаты (все правильно)

но когда я использую это для подсчета итоговых результатов, это ничего не дает мне, однако у меня было, например, 3 результата:

$total = mysql_num_rows($query);

Ответы [ 3 ]

3 голосов
/ 12 ноября 2009

Поскольку ваш ввод не является дескриптором запроса ... Поскольку вы устанавливаете $ q в качестве дескриптора запроса, вы должны использовать его в mysql_num_rows ():

$total = mysql_num_rows($q);
1 голос
/ 12 ноября 2009

Если вы запрашиваете количество строк до того, как фактически извлекаете строки, база данных может вернуть ноль или некоторое промежуточное число. Это верно для Oracle и MySQL (не знаю о MSSQL, но я подозреваю, что это то же самое). Из документов PHP:

Note: If you use mysql_unbuffered_query(), mysql_num_rows() 
will not return the correct value until all the rows in the 
result set have been retrieved. 

Даже для буферизованного запроса PHP должен был бы извлечь все строки для их подсчета.

1 голос
/ 12 ноября 2009

Как я вижу, $ q - это ресурс, а не строковое значение, поэтому запрос $ sql1 завершится с ошибкой

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