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

时间:2013-02-06 12:17:00

标签: php codeigniter

我无法识别为什么会出现这种错误。 基本上我正在尝试编辑学生的数据

我使用以下文件:

控制器 - 学生

查看 - students_edit

模型 - codegen_model

我的控制器如下:

  

功能编辑(){
          $这 - >负载>库( 'form_validation'); $ this-> data ['custom_error'] ='';

    if ($this->form_validation->run('students') == false)
    {
         $this->data['custom_error'] = (validation_errors() ? '<div class="form_error">'.validation_errors().'</div>' : false);

    } else
    {                            
        $data = array(
                'username' => $this->input->post('username'),
                'password' => $this->input->post('password'),                     
                'phone' => $this->input->post('phone'),
                'email' => $this->input->post('email'),

        );
                  if ($this->codegen_model->edit('students',$data,'id',$this->input->post('id'))== TRUE)          {
          redirect(base_url().'index.php/students/manage/');          }           else            {
          $this->data['custom_error'] = '<div class="form_error"><p>An Error Occured</p></div>';

      }       }

  $this->data['result'] = $this->codegen_model->get('students', 'id,username,password,phone,email', 'id = '.$this->uri->segment(3),NULL,NULL,true);
          $this->load->view('students_edit', $this->data);        
}

观点如下:

<?php     

echo form_open(current_url()); ?>
<?php echo $custom_error; ?>
<?php echo form_hidden('id',$result->id) ?>

        <p>                         
        <input id="username" type="text" name="username" value="<?php echo $result->username ?>"  />
        <?php echo form_error('username','<div>','</div>'); ?>
        </p>


        <p>                         
        <input id="password" type="password" name="password" value="<?php echo $result->password ?>"  />
        <?php echo form_error('password','<div>','</div>'); ?>
        </p>

<p>     <input id="phone" type="text" name="phone" value="<?php echo $result->phone ?>"  />
        <?php echo form_error('phone','<div>','</div>'); ?>
        </p>


        <p>                         
        <input id="email" type="text" name="email" value="<?php echo $result->email ?>"  />
        <?php echo form_error('email','<div>','</div>'); ?>
        </p>       

        <?php echo form_submit( 'submit', 'Submit'); ?>
</p>

<?php echo form_close(); ?>

Codegen_model如下:

function get($table,$fields,$where='',$perpage=0,$start=0,$one=false,$array='array'){

    $this->db->select($fields);
    $this->db->from($table);
    $this->db->limit($perpage,$start);
    if($where){
    $this->db->where($where);
    }

    $query = $this->db->get();

    $result =  !$one  ? $query->result($array) : $query->row() ;
    return $result;
}

当我尝试加载视图student_edit时出现以下错误:

A PHP Error was encountered

Severity: Notice

Message: Trying to get property of non-object

Filename: views/students_edit.php

Line Number: 5

当我尝试result->id wid其他示例时,它工作正常,但在这里我无法弄清楚错误在哪里。

任何解决方案都会有很大帮助。提前致谢。 NC

答案:

代码似乎工作正常,但问题出在查询中,@ Rick说的是正确的。

2 个答案:

答案 0 :(得分:0)

听起来您的数据库查询存在问题。我会用

die($this->db->last_query());

行后

$query = $this->db->get();

然后尝试运行查询以查看是否存在任何错误。

我还会在您的视图中添加一些检查,以确定$ echo-&gt; id是否存在,然后将其回显以避免错误

答案 1 :(得分:0)

我怀疑问题是codegen_model->get返回null不是对象的东西。可能是null

尝试执行var_dump($result)以确切了解您从$this->codegen_model->get('students', 'id,username,password,phone,email', 'id = '.$this->uri->segment(3),NULL,NULL,true);

获得的内容

顺便说一下可待因模型......这不是你应该如何在CI中使用模型。