"Invalid argument supplied for foreach()" error when no rows from CodeIgniter model method
21:16 25 Feb 2016

I have an issue with my foreach loop; it always shows warning that is:

Invalid argument supplied for foreach()

This is my controller:

function prod_detail($id_sp)
{
    $this->load->model('product_model');
    $data['prod_detail'] = $this->product_model->getProdDetailByProdId($id_sp);
    $data['prod_errors'] = $this->product_model->getProdDataError($id_sp);
    $data['error_repairing'] = $this->product_model->getProdDataErrorRepairing($id_sp);
    $data['rows']= $this->membership_model->getUserData();
    $data['main_content'] = 'backend/home/manproduct/prod_detail_view';
    $this->load->view('includes/admin/template', $data);
}

This is my model:

function getProdDataError($id_sp)
{
    $this->db->where('id_sp', $id_sp);
    $this->db->where('status', 0);
    $query = $this->db->get('loi');
    if ($query->num_rows() > 0) {
        foreach ($query->result() as $row) {
            $data[] = $row;
        }
        return $data;
    }
}

function getProdDataErrorRepairing($id_sp)
{
    $this->db->where('id_sp', $id_sp);
    $this->db->where('status', 1);
    $query = $this->db->get('loi');
    if ($query->num_rows() > 0) {
        foreach ($query->result() as $row) {
            $data[] = $row;
        }
        return $data;
    }
}

And here is my view:

if ($ud->status == 0) {
    echo 'Hoạt động';
} elseif ($ud->status == 1) {
    echo 'Lỗi
    '; foreach ($prod_errors as $err) { echo '
  • ' . $err->ten_loi . '
  • '; } echo '
'; } elseif ($ud->status == 2) { echo 'Đang sửa lỗi
    '; foreach ($error_repairing as $err) { echo '
  • ' . $err->ten_loi . '
  • '; } echo '
'; } elseif ($ud->status == 3) { echo 'Chưa lắp đặt'; }

It's ok when $ud->status==1 but it shows a warning message when $ud->status==2. By the way, I use CodeIgniter to develop my application.

php codeigniter model-view-controller foreach