【问题标题】:Count result array to string conversion error in codeigniter在codeigniter中计算结果数组到字符串转换错误
【发布时间】:2016-09-15 14:35:57
【问题描述】:

我在我的模型中使用此方法从我的数据库中获取计数结果:

function members($group_id)
{
    $this->db->where('group_id',$group_id);
    $query = $this->db->query('SELECT COUNT(group_id) FROM member');    
    return $query;
 }

在我的控制器中有这个方法:

   function total_members ()
   {
       $group_id = $this->input->post('group_id');
       $this->load->model('Member_model');
       $members = $this->Member_model->members($group_id);
       echo $members;
   }

我收到了这个奇怪的错误,上面写着:

严重性:4096 消息:CI_DB_mysqli_result 类的对象无法转换为字符串 文件名:controllers/Payment.php

【问题讨论】:

  • 在控制器中添加print_r($members)并首先检查输出

标签: arrays string codeigniter


【解决方案1】:

您需要返回一个需要另一个调用的结果集。在这种情况下,我建议row()。试试这些修改后的功能。

function members($group_id)
{
    $this->db->where('group_id', $group_id);
    $query = $this->db->query('SELECT COUNT(group_id) as count FROM member');
    return $query->row();
}

function total_members()
{
    $group_id = $this->input->post('group_id');
    $this->load->model('Member_model');
    $members = $this->Member_model->members($group_id);
    if(isset($members))
    {
        echo $members->count;
    }
}

了解不同类型的结果集here

【讨论】:

    【解决方案2】:

    试试这个

    型号

    function members($group_id) {
        return $this->db->get_where('member', array('group_id' => $group_id))->num_rows();
    }
    

    控制器

    function total_members() {
        $group_id = $this->input->post('group_id');
        $this->load->model('member_model');
        $members = $this->member_model->members($group_id);
        print_r($members);
    }
    

    在 codeigniter 中有 num_rows() 来计算行数。更多信息请查看documentation

    【讨论】:

    • 这会起作用,但查询将首先返回所有行。通过在查询中使用 sql 函数COUNT,只会返回一行(在这种情况下)。资源密集度大大降低,并且可能更快。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-02
    • 2023-03-11
    • 1970-01-01
    • 2015-12-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多