我正在使用代码点火器,并且正在构建查询以返回参加活动的人数。这样我就可以算出一个数字并尝试计算出一个百分比。
我遇到的问题是我正在尝试根据Codeigniter 3 Docs建立查询,但是由于某种原因我返回了错误的结果,根本无法弄清原因。
首先这里是我正在查询的数据库中的表:
这是我从控制器调用的函数:
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();
}
答案 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(),您可以获得查询将产生的行数,但没有提供实际的结果集。 在仅需要行计数(例如分页)时很有用,显示否。记录等。