Единственный способ, которым базы данных могут подсчитать количество строк, - выполнить запрос и подсчитать количество строк.
Расширение mysql по умолчанию использует режим буферизованного запроса, который заставляет весь набор данных извлекаться в память до того, как элемент управления возвращается в PHP, и он может начать обрабатывать строки.
PDO по умолчанию использует небуферизованный режим, что приводит к снижению задержки при загрузке страницы и обычно является тем, что вам нужно. Компромисс в том, что rowCount () не будет возвращать достоверную информацию, пока не будет получен весь набор данных.
Так как вы можете получить этот счет?
Easy:
$q = $db->query("SELECT ...");
$rows = $q->fetchAll();
$rowCount = count($rows);
echo "There are $rowCount rows\n";
foreach ($rows as $row) {
print_r($row);
}
Но это отстой, потому что он запрашивает все строки вперед и замедляет загрузку моей страницы, у старого расширения mysql такой проблемы не было!?
Но это именно то, что на самом деле делает старое расширение mysql под прикрытием; это единственный способ получить этот счет.