获取错误:尝试获取非对象的属性

时间:2016-08-17 05:35:37

标签: php mysql codeigniter codeigniter-3

我是CodeIgniter的初学者。在一个小的基础项目上工作,当我在List视图上工作时,我收到一个错误“试图获取非对象的属性。

请帮帮我! 这里的屏幕截图。 Error

My code

以下是我的观点:

<ul id="actions">
 <h4>List Actions</h4>
 <li><a href="<?php echo base_url(); ?>task/add/  <?php echo $list_detail->id; ?>"> Add Task</a></li>
 <li><a href="<?php echo base_url(); ?>lists/edit/ <?php echo $list_detail->id; ?>"> Edit List</a></li>
 <li><a onclick="return confirm('Are you sure?')" href="<?php echo base_url();?>lists/delete/<?php echo $list_detail->id;?>"> Delete List</a></li></ul>
 <h1><?php echo $list_detail->list_name; ?></h1>
 Created on : <strong><?php echo date("n-j-Y",strtotime($list_detail->create_date)); ?></strong>
 <br/><br/>
 <div style="max-width:500px;"><?php echo $list_detail->list_body; ?></div>
 <!-- <?php //echo print_r($query); ?>
 -->


 <br/><br/>

这是控制器

 public function show($id){

    $data['list_detail'] = $this->List_model->get_lists($id);

    $data['main_content']='lists/show';
    $this->load->view('layout/main',$data);

 }

这是模型

public function get_list($id){

        $query=$this->db->get('lists');
        $this->db->where('id', $id);
        return $query->row();
    }

4 个答案:

答案 0 :(得分:0)

生成此错误是因为您尝试以类对象样式访问数组。

例如:

$data['list_details'] = 'some value';

并像访问它一样:

$data->list_details;   // it will generate the error "Trying to get property of non object"

答案 1 :(得分:0)

在模型功能上使用$query->row()然后在控制器上

模型功能

public function get_list($id) {
    $this->db->where('id',$id);
    $query = $this->db->get('lists');
    return $query->row();
}

控制器

public function show($id){
    // Gets data where it belongs with that id

    $list_data = $this->model_name->get_list($id);

    $data['id'] = $list_data->id;
    $data['create_date'] = $list_data->create_date;
    $data['list_body'] = $list_data->list_body; 

    $this->load->view('someview', $data);

}

在模型功能上使用$query->row_array();然后在控制器上

public function get_list($id) {
    $this->db->where('id',$id);
    $query = $this->db->get('lists');
    return $query->row_array();
}

控制器

public function show($id) {
    // Gets data where it belongs with that id

    $list_data = $this->model_name->get_list($id);

    $data['id'] = $list_data['id'];
    $data['create_date'] = $list_data['create_date'];
    $data['list_body'] = $list_data['list_body']; 

    $this->load->view('someview', $data);

}

在视图中,您可以访问

<?php echo $id;?>
<?php echo $create_date;?>
<?php echo $list_body;?>

更新多个数据

public function get_list() {
    $query = $this->db->get('lists');
    return $query->result();
}

控制器

$results = $this->model_name->get_list();

// Or
//$results[] = $this->model_name->get_list();

$data['list_detail'] = $results;

$this->load->view('someview', $data);

查看

<?php foreach ($list_detail as $list) {?>
   <?php echo $list->id;?>
   <?php echo $list->create_date;?>
   <?php echo $list->list_body;?>
<?php  }?>

答案 2 :(得分:0)

查看代码后。我认为你的模型功能

中写错了

您的模型功能必须如下所示

public function get_list($id) {
    $this->db->where('id',$id);
    $query = $this->db->get('lists');
    return $query->row();
}

同样在您打印价值之前的视图中,请检查!empty($list_details)的条件。所以如果值不存在,它就不会抛出任何错误。

我希望这会对你有所帮助。

答案 3 :(得分:0)

在控制器中,您将模型函数称为get_lists()。

但是模型中没有get_lists的功能。你需要将控制器中的函数名更改为get_list()