Единственный способ, которым базы данных могут подсчитать количество строк, - это запустить запрос и подсчитать количество строк.
Расширение 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 под обложками; это единственный способ получить этот счет.
Я не уверен, что вы ищете, вы вызываете affected_rows() и возвращаете ноль для оператора select? Выбор не влияет на какие-либо строки. –
Я искал эквивалент PDO mysql_num_rows() –
в прошлом году, как вы решили? – Strae