Search code examples
phpcodeigniterselectsumcolumn-sum

Sum column values in SELECT query with Codeigniter's ActiveRecord


Trying to get the sum of the values entered within a column (af_am_msm) from my table (non_clinical_total_tests). I want to display that total within an html table.

My error message is:

A PHP Error was encountered - Severity: Notice - Message: Array to string conversion

My MODEL:

public function af_am_sum()
{
    $this->db->select_sum('af_am_msm');
    $query = $this->db->get('non_clinical_total_tests');
    return $query->result();
}

My CONTROLLER:

public function index()
{
    $data['af_am_total'] = $this->Page_model->af_am_sum();

    $data['pages'] = $this->Page_model->get_list();
    
    $this->template->load('admin', 'default', 'district1', $data);
}

My VIEW:

<td><?php echo $af_am_total; ?></td>

Solution

  • Codeigniter's result() function always returns an array of objects. In your view you echo it out as a string, hence the error. In order to avoid that you either produce result rows, looping through the array, or:

    like in your example, as you are expecting only one row (the sum of a column) you have the possibility to get this result row (without the need to loop through it) with row()->the_name_of_your_column. To simplify the output we can create an alias for the mysql sum, naming it as second parameter:

    $this->db->select_sum('af_am_msm','my_sum');
    $query = $this->db->get('non_clinical_total_tests');
    return $query->row()->my_sum;
    

    which echos in your view as pretended