2009-11-11 3 views
0

это мой PHP кодmysql_num_rows не работает

$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); 
+2

Пожалуйста, переформатируйте образец кода для удобочитаемости, пожалуйста, также удалите знаки раздражения !!!!!! Благодарю. – pilcrow

+0

Действительно ли ваши запросы работают? Вы пробовали mysql_error() после второго запроса? –

ответ

3

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

$total = mysql_num_rows($q); 
1

Как я могу видеть $ д это ресурс не является строковое значение, по этой причине $ SQL1 запрос потерпит неудачу с ошибкой

+0

В частности, $ q сначала используется в предложении WHERE, затем для хранения ресурса, а затем в другом аргументе where. Кроме того, значение в предложении WHERE не цитируется. – outis

1

Если вы запрашиваете количество строк до того, как вы действительно извлекли строки, база данных может возвращать нуль или некоторое промежуточное число. Это справедливо для 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 бы извлечь все строки для подсчета их.

Смежные вопросы