Представим, есть ситуация: нужно сделать запрос с ограничением получения строк(LIMIT), но и в тоже время нужно узнать полное количество строк подходящих под условия запроса. Это ситуация может использоваться, например, в пагинаторе. И так, я всегда в таких случаях делал два запроса, хотя понимал, что это лишняя нагрузка, но ни чего не мог поделать. Но теперь я зная, как делать правильно и покажу вам. Все очень просто:
SELECT SQL_CALC_FOUND_ROWS * FROM `table_name` LIMIT 3;
SELECT FOUND_ROWS();
Такой запрос вернет два результата: количество строк с учетом limit и без учета.
В php можно обработать этот запрос так:
$res = mysql_query("SELECT SQL_CALC_FOUND_ROWS * FROM `table_name` LIMIT 3", $query);
$result1 = array();
while ($row = mysql_fetch_assoc($res))
{
$result1[] = $row;
}
$result2 = mysql_query("SELECT FOUND_ROWS()", $query);