CodeIgniter&中$ query> num_rows()和$ this-> db-> count_all_results()之间的差异推荐哪一个

时间:2011-08-12 07:37:37

标签: php codeigniter

在一个场景中,我需要知道查询将返回的记录集的计数,这可以通过$query->num_rows()$this->db->count_all_results()在codeigniter中完成。哪一个更好,这两者之间有什么区别?

8 个答案:

答案 0 :(得分:44)

使用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

答案 1 :(得分:5)

$this->db->count_all_resultsActive Record查询的一部分(准备查询,仅返回数字,而不是实际结果)。

$query->num_rows()resultset object上执行(从数据库返回结果后)。

答案 2 :(得分:2)

Which one is better and what is the difference between these two它对我来说几乎无法解决,有人只想获取记录数而不重新触摸或执行另一个涉及相同资源的查询。此外,这两个函数使用的内存毕竟是相同的,因为count_all_result你仍然执行get(在CI AR术语中),所以我建议你使用另一个(或使用计数) ()代替)给你可重用的好处。

答案 3 :(得分:2)

有两种方法可以计算查询将返回的记录总数。 首先这个

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

这将返回查询带来的行数。

第二

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

只需count_all_results就可以再次运行查询。

答案 4 :(得分:1)

我们也可以使用

return $this->db->count_all('table_name');  

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

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

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

答案 5 :(得分:0)

结果总数

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

答案 6 :(得分:0)

简直如下;

$this->db->get('table_name')->num_rows();

这将获得行数/记录数。但是你也可以使用搜索参数;

$this->db->select('col1','col2')->where('col'=>'crieterion')->get('table_name')->num_rows();

但是,应该注意的是,如果按照以下方式应用,您会看到错误的错误;

$this->db->get('table_name')->result()->num_rows();

答案 7 :(得分:0)

$sql = "select count(*) as row from login WHERE firstname = '" . $username . "' AND password = '" . $password . "'";
    $query = $this->db->query($sql);
    print_r($query);exit;
    if ($query->num_rows() == 1) {
    return true;
    } else {
    return false;
    }