在PHP中统计活动和非活动删除的结果

在PHP中统计活动和非活动删除的结果,php,mysql,codeigniter,Php,Mysql,Codeigniter,我试图计算MySQL数据库中显示给用户的活动结果的数量 但我只能计算行数,但似乎无法计算有多少行处于活动/非活动/已删除状态 <?php $user_id = $this->session->userdata('user_id'); $query = $this->custom_query("SELECT post_status FROM listings WHERE user_id=$user_id "); if($query->num_rows()&

我试图计算MySQL数据库中显示给用户的活动结果的数量 但我只能计算行数,但似乎无法计算有多少行处于活动/非活动/已删除状态

<?php
  $user_id = $this->session->userdata('user_id');
  $query = $this->custom_query("SELECT post_status FROM listings WHERE user_id=$user_id ");
  if($query->num_rows()>0){
    foreach($query->result() as $row){
      if($row->post_status == 'active'){
        echo $row->num_rows();
      }
    }                   
  }
?>

您可以使用sql计数函数,请查看计数函数的工作原理

寻找答案

select count(id) as active_count from listings WHERE user_id=$user_id and post_status = 'active' 

您可以使用sql计数函数,在这里查看计数函数的工作原理

寻找答案

select count(id) as active_count from listings WHERE user_id=$user_id and post_status = 'active' 

您可以使用修改后的sql语句尝试此修改后的代码

一个查询中有多个计数

 <?php
      $user_id = $this->session->userdata('user_id');

      $query = $this->custom_query("SELECT 
          COUNT(CASE WHEN post_status = 'active' THEN 1 END) as active_total,
          COUNT(CASE WHEN post_status = 'inactive' THEN 1 END) as inactive_total,
          COUNT(CASE WHEN post_status = 'deleted' THEN 1 END) as deleted_total
        FROM listings WHERE user_id = $user_id");

        $row = $query->result();

        echo "Active: ".$row[0]->active_total."<br/>\n";
        echo "Inactive: ".$row[0]->inactive_total."<br/>\n";
        echo "Deleted: ".$row[0]->deleted_total."<br/>\n";
?>

您可以使用修改后的sql语句尝试此修改后的代码

一个查询中有多个计数

 <?php
      $user_id = $this->session->userdata('user_id');

      $query = $this->custom_query("SELECT 
          COUNT(CASE WHEN post_status = 'active' THEN 1 END) as active_total,
          COUNT(CASE WHEN post_status = 'inactive' THEN 1 END) as inactive_total,
          COUNT(CASE WHEN post_status = 'deleted' THEN 1 END) as deleted_total
        FROM listings WHERE user_id = $user_id");

        $row = $query->result();

        echo "Active: ".$row[0]->active_total."<br/>\n";
        echo "Inactive: ".$row[0]->inactive_total."<br/>\n";
        echo "Deleted: ".$row[0]->deleted_total."<br/>\n";
?>

计算检索到的数据库记录的简单方法是在查询中使用
num_rows

$user_id = $this->session->userdata('user_id');
return $this->db->get_where('listings', array('user_id'=> $user_id, 'post_status' => 'active'))->num_rows(); 

计算检索到的数据库记录的简单方法是在查询中使用
num\u rows

$user_id = $this->session->userdata('user_id');
return $this->db->get_where('listings', array('user_id'=> $user_id, 'post_status' => 'active'))->num_rows(); 

如果上述方法有效,您可能需要在之后将其转换为使用准备好的语句以实现故障安全并防止sql注入。如果上述方法有效,您可能需要在之后将其转换为使用准备好的语句以实现故障安全并防止sql注入。