【问题标题】:CodeIgniter : Get value from single column from tableCodeIgniter:从表中的单个列中获取值
【发布时间】:2019-04-30 05:19:05
【问题描述】:

我有一个包含个人数据的表,例如姓名、性别、地址等。我的问题是,如何从我的表中获取男性和女性的总数?

这是我的 SQL 查询:

SELECT gender, COUNT(*) AS total
FROM personaldata
GROUP BY gender

这是我模型中的代码:

public function gender_count()
{
    $this->db->select('gender, count(*) as total');
    $this->db->from('personaldata');
    $this->db->group_by('gender');

    $query = $this->db->get()->row()->total;
    return $query->result();
}

那么如何将 SQL 查询写入 CI 模型和控制器?我只想在我的网站中显示总性别。

谢谢

【问题讨论】:

  • 为此尝试两个不同的查询

标签: sql codeigniter codeigniter-3


【解决方案1】:

有两种方法,你可以选择你觉得轻松的一种

型号:

public function gender_count()
{
    $response = array();
//for female
    $this->db->select('count(id) as ftotal');//id should be primary key
    $this->db->from('personaldata');
    $this->db->where('gender','f');
    $this->db->group_by('gender');
    $query = $this->db->get();
    if ($query->num_rows() > 0) {
        $response['f'] = $query->row('ftotal');
    }else{
        $response['f'] = 0;
    }
//for male
    $this->db->select('count(id) as mtotal');//id should be primary key
    $this->db->from('personaldata');
    $this->db->where('gender','m');
    $this->db->group_by('gender');
    $query = $this->db->get();
    if ($query->num_rows() > 0) {
        $response['m'] = $query->row('mtotal');
    }else{
        $response['m'] = 0;
    }
    return $response;//assosiative array
}

public function gender_count()
{
    $response = array();
    $this->db->select('gender,count(id) as total');//id should be primary key
    $this->db->from('personaldata');
    $this->db->group_by('gender');
    $query = $this->db->get();
    if ($query->num_rows() > 0) {
        foreach($query->result() as $row){
          $response[$row->gender] = $row->total;
        }
    }else{
        $response['f'] = 0;
        $response['m'] = 0;
    }
    return $response;//assosiative array
}

控制器:

$data = array();
$genderCount = $this->Gender_model->gender_count();
$data['fcount'] = $genderCount['f'];
$data['mcount'] = $genderCount['m'];
$this->load->view('genderCount',$data);

查看:

<span>Female:</span><b><?php echo $fcount;?></b>
<span>Male:</span><b><?php echo $mcount;?></b>

【讨论】:

  • 我收到错误消息:消息:未定义的索引:f 和消息:未定义的索引:我的控制器中的 m
  • 在模型中还是在控制器中?你能分享你的personaldata 表吗?我想看看你的gender 字段
  • 对不起,我的错误,我的代码中有错字:) 现在它可以工作了,非常感谢伙计.. 你能解释一下这段代码吗: if ($query->num_rows() > 0) { foreach ($query->result() as $row){ $response[$row->gender] = $row->total; }
  • 当然,如果您的 $query 的 num_rows > 0 则只创建您的 $respose 数组,这意味着您有记录或您有特定的记录
【解决方案2】:

您可以通过 Count(*) 获取总性别值并从 @OutputValue 发送该值

Declare  @OutputValue int
select @OutputValue=COUNT(*) from personaldata

【讨论】:

    【解决方案3】:

    您可以在模型中使用以下函数并从控制器调用它。

    型号

    public function gender_count()
    {
        $this->db->select('gender, COUNT(*) as total');
        $this->db->group_by('gender'); 
        $query = $this->db->get('users', 10)->result();
    
        return $query;
    }
    

    控制器

    public function index()
    {
        $this->load->database();
        $this->load->model('User');
    
        $result = $this->User->gender_count();
    
        echo '<pre>';
        print_r($result);
        die;
    }
    

    注意:我以我的模型名和表名为例,所以你需要使用你的模型名和表名。

    我希望这对你有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-05-06
      • 1970-01-01
      • 2023-04-10
      • 1970-01-01
      • 1970-01-01
      • 2016-12-08
      相关资源
      最近更新 更多