【问题标题】:Count rows in DB where计算数据库中的行
【发布时间】:2011-05-11 13:12:09
【问题描述】:

我正在关注关于使用 CI/jQuery 进行分页的教程。在教程中,他们通过以下方式获得总行数:

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

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

我只需要数据库中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

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

【问题讨论】:

    标签: php mysql codeigniter activerecord codeigniter-2


    【解决方案1】:

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

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

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

    【讨论】:

    • 嘻嘻,我现在因为忽略了这一点而感到很愚蠢。总是试图以更艰难的方式做事:(谢谢!
    【解决方案2】:

    不是肯定的,但您似乎只需要为该列命名。例如,

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

    我怀疑这会奏效。

    【讨论】:

      【解决方案3】:

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

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

      现在你将拥有:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-08-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-08-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多