Получить общее количество строк при использовании LIMIT

Были следующие примеры отсюда и многих других сайтов, но не получая ожидаемых результатов

Фрагмент моего PHP-кода;

$query="SELECT * FROM book"; $result=mysql_query($query); echo mysql_num_rows($result); //returns 14 $query="SELECT FOUND_ROWS()"; $rtotal=mysql_query($query); echo mysql_result($rtotal,0); //returns 14 $query="SELECT * FROM book LIMIT 0,4"; $result=mysql_query($query); echo mysql_num_rows($result); //returns 4 $query="SELECT FOUND_ROWS()"; $rtotal=mysql_query($query); echo mysql_result($rtotal,0); //returns 4 Why is it 4 and not 14?? 

В последнем примере почему это 4, а не 14? Что я делаю не так?

Related of "Получить общее количество строк при использовании LIMIT"

Добавьте SQL_CALC_FOUND_ROWS в ваш оператор select: http://dev.mysql.com/doc/refman/5.5/en/information-functions.html#function_found-rows

Это заставляет MySQL подсчитывать строки, как будто предельного оператора нет.

 $query="SELECT SQL_CALC_FOUND_ROWS * FROM book LIMIT 0,4"; 

Ваш последний запрос возвратил 4 строки ( $query="SELECT * FROM book LIMIT 0,4"; ).

Вот почему он возвращает 4, а не 14.


Процитировать документацию:

В отсутствие опции SQL_CALC_FOUND_ROWS в последнем успешном операторе SELECT FOUND_ROWS () возвращает количество строк в результирующем наборе, возвращаемом этим оператором. Если оператор включает предложение LIMIT, FOUND_ROWS () возвращает количество строк до предела.