Codeigniter会捕获不存在的ID

时间:2016-08-23 09:13:23

标签: php codeigniter

基于此LINK,如果ID不存在,我会使用此代码制作错误消息

这是我在 CI模型

中的代码
public function user_list_update($id){
    $id = $this->db->where('id',$id);
    $query = $this->db->get('info');
    $row = $query->row();
    if($row > 0){             //line 26
        return $row;
    }else{
        echo "does not exist.";
    }
}

并在控制器

$id = $this->input->get('id');
$data["user_list"] = $this->um->user_list_update($id);
//some code here to display data of ID

我收到此错误

  

遇到PHP错误

     

严重性:注意

     

消息:类stdClass的对象无法转换为int

     

文件名:models / users_model.php

     

行号:26

     

回溯:

     

文件:C:\ xampp \ htdocs \ CI \ application \ models \ users_model.php行:26   功能:_error_handler

我是C.I的新人

3 个答案:

答案 0 :(得分:1)

使用此:

 if($query->num_rows() > 0) 

而不是:

if($row > 0){ 

答案 1 :(得分:1)

$row = $query->row();的结果是一个名为$row

的对象

您无法根据它给出错误的整数测试对象,如您所见

因此,测试实际设置$row变量

public function user_list_update($id){
    $id = $this->db->where('id',$id);
    $query = $this->db->get('info');
    $row = $query->row();
    if(isset($row)){             //line 26
        return $row;
    }else{
        echo "does not exist.";
    }
}

答案 2 :(得分:1)

您可以使用此解决方案解决您的问题:

public function user_list_update($id){
    $this->db->where('id',$id);
    $this->db->from('info');
    $query = $this->db->get();
    if($query->num_rows() > 0) {
        return $query->row;
    } else {
        echo "does not exist.";
    }    
}