Были следующие примеры отсюда и многих других сайтов, но не получая ожидаемых результатов
Фрагмент моего 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? Что я делаю не так?
Добавьте 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 () возвращает количество строк до предела.