Каков проверенный и надежный способ подсчета количества строк, возвращаемых функцией PHP mysql_query?

StackOverflow https://stackoverflow.com/questions/1191436

  •  19-09-2019
  •  | 
  •  

Вопрос

я знаю о 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 из них.

Однако, если вам нужно гарантировать точность, вам придется объединить два запроса в транзакцию согласованного чтения.В противном случае запрос, который выполняется между запросами счетчика и данных, может сделать недействительной информацию о подкачке.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top