Codigniter查询返回错误计数

时间:2019-02-12 20:14:33

标签: jquery database codeigniter model

我正在使用代码点火器,并且正在构建查询以返回参加活动的人数。这样我就可以算出一个数字并尝试计算出一个百分比。

我遇到的问题是我正在尝试根据Codeigniter 3 Docs建立查询,但是由于某种原因我返回了错误的结果,根本无法弄清原因。

首先这里是我正在查询的数据库中的表:

my database

这是我从控制器调用的函数:

public function get_event_attendance_percentage($id) {
        $this->db->select('*');
        $this->db->from('attendance');
        $this->db->where('event_id', $id );
        $this->db->where('attended', 1 );
        $attendancecount = $this->db->get();
        return count($attendancecount);

    }

我从出勤表中选择所有参加者,然后声明我希望ID为17的活动的所有参加者,然后我还指出参加者的人数= 1

我想返回数字3,但是我要返回数字1。

有人可以帮我看看我要去哪里了吗?


我在@Vickel的感激帮助下完成了这项工作。这是返回正确结果的查询:

public function get_event_attendance_percentage($id) {
        $this->db->select('*');
        $this->db->from('attendance');
        $this->db->where('event_id', $id );
        $this->db->where('attended', 1 );
        $attendancecount = $this->db->get();
        return $attendancecount->num_rows();
    }

2 个答案:

答案 0 :(得分:2)

count()php built-in function,在您使用它的方式中,它“计算”查询字符串,因此无论如何返回1。

正确的CI方式是使用return $attendancecount->num_rows():请参见here

答案 1 :(得分:1)

如果只想计算行数,则可以使用$ this-> db-> count_all_results(),如下所示。

public function get_event_attendance_percentage($id)
{
        $this->db->where('event_id', $id );
        $this->db->where('attended', 1 );
        $this->db->from('attendance');
        return $this->db->count_all_results();
}

检查CodeIgniter手册=> https://www.codeigniter.com/user_guide/database/query_builder.html?highlight=count_all#limiting-or-counting-results

注意:-

num_rows():-使用 num_rows()首先执行查询,然后可以检查获得了多少行。 在需要表数据时很有用

count_all_results():-使用 count_all_results(),您可以获得查询将产生的行数,但没有提供实际的结果集。 在仅需要行计数(例如分页)时很有用,显示否。记录等。