Каков проверенный и надежный способ подсчета количества строк, возвращаемых функцией PHP mysql_query?
Вопрос
я знаю о mysql_num_rows ( resource $result )
но я где-то читал, что это не 100% точность.Я видел другие альтернативы, которые фактически получают каждую строку и запускают счетчик, но это звучит довольно неэффективно.Мне интересно посмотреть, что делают другие, чтобы получить точный и эффективный подсчет.
Решение
использовать mysql_num_rows()
когда ты сделал SELECT
или SHOW
запрос и mysql_affected_rows()
в случае INSERT, UPDATE, REPLACE or DELETE
запросы.
оба достаточно точны!!
Другие советы
mysql_num_rows()
является точным, пока вы не используете mysql_unbuffered_query()
.
Если вы используете mysql_query()
, mysql_num_rows()
является точным.
Если вы используете mysql_unbuffered_query()
, mysql_num_rows()
будет возвращать неправильный результат, пока не будут получены все строки.
Было бы полезно точно знать, что вы делаете с количеством строк, но я предполагаю, что это для самого стандартного применения наборов результатов разбиения на страницы.
Выполните два запроса.Первый — это запрос COUNT со всеми критериями WHERE второго.Второй используется для выборки строк.Либо это, либо загрузка 1000 строк в память, когда вы собираетесь отображать только 10 из них.
Однако, если вам нужно гарантировать точность, вам придется объединить два запроса в транзакцию согласованного чтения.В противном случае запрос, который выполняется между запросами счетчика и данных, может сделать недействительной информацию о подкачке.