Подтвердить что ты не робот

Разница между $query> num_rows() и $this-> db-> count_all_results() в CodeIgniter и которая рекомендуется

В сценарии мне нужно знать количество записей, которое запрос вернет, что в кодеигнитре можно сделать с помощью $query->num_rows() или $this->db->count_all_results(). Какой из них лучше и в чем разница между этими двумя?

4b9b3361

Ответ 1

С num_rows() вы сначала выполняете запрос, а затем можете проверить, сколько у вас строк. count_all_results(), с другой стороны, дает только количество строк, которые будет вызывать ваш запрос, но не дает вам фактического набора результатов.

// num rows example
$this->db->select('*');
$this->db->where('whatever');
$query = $this->db->get('table');
$num = $query->num_rows();
// here you can do something with $query

// count all example
$this->db->where('whatever');
$num = $this->db->count_all_results('table');
// here you only have $num, no $query

Ответ 2

$this->db->count_all_results является частью запроса Active Record (подготовка запроса, только возврат номера, а не фактические результаты).

$query->num_rows() выполняется на объекте результатов (после возвращения результатов из БД).

Ответ 3

Which one is better and what is the difference between these two Для меня это почти неудобно, кто-то просто хочет получить количество записей без повторного касания или выполнить другой запрос, в котором задействован тот же ресурс. Кроме того, память, используемая этими двумя функциями, в конце концов одинакова, поскольку с count_all_result вы все еще выполняете get (в терминах CI AR), поэтому я рекомендую вам использовать другую (или вместо этого использовать count()), который дал вам преимущества повторного использования.

Ответ 4

Существует два способа подсчета количества записей, возвращаемых запросом. Сначала это

$query = $this->db->query('select blah blah');  
return $query->num_rows();

Это приведет к возврату числа строк запроса.

Второе

return $this->db->count_all_results('select blah blah');

Просто count_all_results потребует снова выполнить запрос.

Ответ 5

Мы также можем использовать

return count_all('table_name');  

или

$this->db->from('table_name');
return $this->db->count_all_result();

или

$query = $this->db->query('select * from tab');  
return $query->num_rows();

Ответ 6

Общее количество результатов

$this->db->count_all_results('table name');