计算DB中的行数

时间:2011-05-11 13:12:10

标签: php mysql codeigniter activerecord codeigniter-2

我正在关注CI / jQuery的分页教程。在本教程中,他们通过执行以下操作获得总行数:

$config['total_rows'] = $this->db->count_all('tblUsers');

他们获得定义分页的用户总数。但是,他们得到了所有用户。在我的应用程序中,我只需要为其分配了特定值的用户,在本例中为“role”。

我只需要数据库中role = 1的用户。

我尝试过使用->count()(来自CI的Active Record DB类)或尝试count()来检查数组中有多少'行',但我还没有尝过能够得到我需要的结果。我也试过做一个常规查询:select count(*) from tblusers where role = 1然后以某种方式尝试抓住它返回了多少,但是唉。

$config['total_row'] = $this->db->query("select count(*) from tblusers where role = '1'")->result_array();

给了我以下数组:

Array ( [0] => Array ( [count(*)] => 2 ) )

但是,我似乎无法读出count(*)索引..

Message: Undefined index: count(*)

我希望这有一定道理。基本上我正在尝试做类似的事情。

$this->db->where('role', 1)->get('tblUsers')->count()

可悲的是,这不起作用:D

提前致谢。任何帮助表示赞赏。

3 个答案:

答案 0 :(得分:5)

您可以简单地为count(*)结果列添加别名:

select count(*) as number_of_entries from tblusers where role = '1'

现在,您可以使用number_of_entries作为结果数组中的键来访问所需的值。

答案 1 :(得分:2)

不是正面的,但似乎所有你需要的是给该列命名。例如,

... = $this->db->query("select count(*) as colname from tblusers where role = '1'")->result_array();

我怀疑这会奏效。

答案 2 :(得分:2)

要读取count(*)索引,请使用以下命令创建可读字段:

select count(*) as cnt from tblusers where role = 1

现在你将拥有:

Array ( [0] => Array ( [cnt] => 2 ) )