Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php $query之间的差异>;num_rows()和$this->;db->;计算CodeIgniter&;中的所有结果();推荐哪一种_Php_Codeigniter - Fatal编程技术网

Php $query之间的差异>;num_rows()和$this->;db->;计算CodeIgniter&;中的所有结果();推荐哪一种

Php $query之间的差异>;num_rows()和$this->;db->;计算CodeIgniter&;中的所有结果();推荐哪一种,php,codeigniter,Php,Codeigniter,在一个场景中,我需要知道查询将返回的记录集计数,这在codeigniter中可以通过$query->num_rows()或$this->db->count_all_results()完成。哪一个更好,这两者之间有什么区别?使用num_rows()首先执行查询,然后可以检查得到的行数count\u all\u results()只提供查询将产生的行数,而不提供实际的结果集 // num rows example $this->db->select('*'); $this->db-

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

使用
num_rows()
首先执行查询,然后可以检查得到的行数<另一方面,code>count\u all\u 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

$this->db->count\u all\u results
是查询的一部分(准备查询,只返回数字,不返回实际结果)


$query->num_rows()
是在数据库返回结果后对执行的。

哪一个更好,这两个之间的区别是什么
对我来说几乎是不可能的,有人只想获得记录的数量,而不需要重新触摸或执行涉及相同资源的另一个查询。此外,这两个函数使用的内存毕竟是相同的,因为使用
count\u all\u result
时,您仍在执行
get
(用CI AR术语),因此我建议您使用另一个函数(或者改用count())这给了您可重用性的好处。

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

$query = $this->db->query('select blah blah');  
return $query->num_rows();
这将返回查询带来的行数

第二

return $this->db->count_all_results('select blah blah');
只需计算再次运行查询所需的所有结果。

我们也可以使用

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


结果总数

$this->db->count_all_results('table name');
简单地说是咆哮

$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();

所以对我来说,使用
如果($this->db->count_all_results()>0{//do stuff}
?如果你关心的只是找到的结果的数量,那么是的,我想我会使用
count_all_results
,我需要分页计数,非常感谢:)如果从优化的角度来看,
count\u all\u结果
要好得多。
$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();
$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;
    }