Php 尝试获取非对象CodeIgniter的属性

Php 尝试获取非对象CodeIgniter的属性,php,codeigniter,Php,Codeigniter,我是CodeIgniter的新手。我正在使用带有表单验证的表单。我的问题是,当我按“编辑详细信息”时,会出现一个错误。“正在尝试获取非对象的属性” 这是我的观点:user/edit_user.php <div class="row"> <div class="col-md-4"> </div> <div class="col-md-4"> <h1>EDIT YOUR DETAILS</h1>

我是CodeIgniter的新手。我正在使用带有表单验证的表单。我的问题是,当我按“编辑详细信息”时,会出现一个错误。“正在尝试获取非对象的属性”

这是我的观点:user/edit_user.php

<div class="row">
<div class="col-md-4">

</div>
    <div class="col-md-4">
        <h1>EDIT YOUR DETAILS</h1>

        <?php if (validation_errors()){ ?>
            <div class="alert alert-danger">
                <?= validation_errors() ?>
            </div>
        <?php } ?>


        <form method="POST" action="<?=base_url().'user/do_edit_user'?>">
        <input value="<?= $user->id ?>" name="id" type="hidden">
        <input value="<?= $user->name ?>" type="text" name="name" class="form-control" placeholder="Name"> <br>
        <input value="<?= $user->password ?>" type="password" name="password" class="form-control" placeholder="Password"> <br>
        <input value="<?= $user->email ?>" type="text" name="email" class="form-control" placeholder="Email"> <br>
        <input value="<?= $user->number ?>" type="number" name="number" class="form-control" placeholder="Number"> <br>
        <input value="<?= $user->university ?>" type="text" name="university" class="form-control" placeholder="University"> <br>
        <button class="btn btn-success" type="submit">Submit</button>
        </form>
    </div>
<div class="col-md-3">

</div>
我的最后一个控制器是do_edit_用户`

public function do_edit_user(){
    $id = $this->input->post('id');

    $user = array(
        'name' => $this->input->post('name'),
        'password' => $this->input->post('password'),
        'email' => $this->input->post('email'),
        'number' => $this->input->post('number'),
        'university' => $this->input->post('university')
    );

    $this->form_validation->set_rules('name', 'Name', 'required|min_length[3]');
    $this->form_validation->set_rules('password', 'Password', 'required|min_length[8]');
    $this->form_validation->set_rules('email', 'Email', 'required');
    $this->form_validation->set_rules('number', 'Number', 'max_length[11]');
    $this->form_validation->set_rules('university', 'University', 'min_length[8]');

    if ($this->form_validation->run() == FALSE)
    {
        $this->edit_details();
    }
    else
    {
        $this->AdminModel->updateUser($id, $user);
        redirect('user/display');
    }
}

public function activate(){
    $cond = array(
        'activation_code' => $this->uri->segment(3)
        );

    if(!($this->UserModel->checkAccount($cond)==null)){
        echo 'successfully registered email';
    }else{
        echo 'invalid';
    }
}
我缺少什么或需要改变什么?对不起,我的格式,如果这是错误的。如果我的帖子和代码有错误,请纠正我

实际错误是遇到PHP错误

严重性:通知

消息:正在尝试获取非对象的属性

文件名:users/edit_user.php

<div class="row">
<div class="col-md-4">

</div>
    <div class="col-md-4">
        <h1>EDIT YOUR DETAILS</h1>

        <?php if (validation_errors()){ ?>
            <div class="alert alert-danger">
                <?= validation_errors() ?>
            </div>
        <?php } ?>


        <form method="POST" action="<?=base_url().'user/do_edit_user'?>">
        <input value="<?= $user->id ?>" name="id" type="hidden">
        <input value="<?= $user->name ?>" type="text" name="name" class="form-control" placeholder="Name"> <br>
        <input value="<?= $user->password ?>" type="password" name="password" class="form-control" placeholder="Password"> <br>
        <input value="<?= $user->email ?>" type="text" name="email" class="form-control" placeholder="Email"> <br>
        <input value="<?= $user->number ?>" type="number" name="number" class="form-control" placeholder="Number"> <br>
        <input value="<?= $user->university ?>" type="text" name="university" class="form-control" placeholder="University"> <br>
        <button class="btn btn-success" type="submit">Submit</button>
        </form>
    </div>
<div class="col-md-3">

</div>
电话号码:16 电话号码:17 电话号码:18 电话号码:19 电话号码:20 电话号码:21

我的用户模型

public function insertUser($user){
    $this->db->insert('tbluser', $user);
}

public function checkAccount($cond){
    $this->db->where($cond);
    $this->db->update('tbluser', array('status'=>'active'));
    $q = $this->db->get_where('tbluser', $cond);
    return $q->row();
}

public function getUser($cond){
    $this->db->where($cond);
    $q = $this->db->get('tbluser');
    return $q->row();
}

public function getUser($id){
    $q = $this->db->get_where('tbluser', array('id' => $id));
    return $q->row();
}

可能是因为您从
UserModel->getUser()
方法返回了字符串或数组,比如
return$query->result\u array()
return$string
,而不是
return$query->result()
返回到用户控制器中的
$data['user']
。检查一下

更新1

我也是新手,但如果您仍然需要帮助,可以尝试以下方法:

User.php(更改为)

和您的UserModel.php(更改为)


当您返回row_array()或result()时,请尝试这样做。

您应该处理$user对象的空值

下面的事情是骗局,不会给你错误


请发布实际的错误消息。我在@optimuscrime编辑了我的帖子哪个是edit_user.php中的第16行?是idSorry否,第16行以@VipinKr.SinghOK开头尝试使用:在edit_user.php视图的顶部输出$user对象,并检查该对象是否具有视图文件中使用的所有属性,同时发布模型的getUser($id)函数代码,$this->AdminModel->getUser($id);我应该把报税表放在哪里?我不知道在哪里。我是新的。请添加你的UserModel代码,这样我们就可以看到你想通过getUser()方法传递什么数据。我已经尝试过了,错误消失了。但现在的问题是,当我单击编辑按钮时,名称、电子邮件、号码等的值不会返回。。或者它都是空的。我应该把新的对象变量放在哪里?在我的控制器或视图中?在您的控制器中
$email => $this->input->post('email');                         //this
$password => sha1($this->input->post('password'));             //this

$data['user'] = $this->UserModel->getUser($email, $password);  //or this
public function getUser($email, $password){ // and this are
$this->db->where('email' => $email);        // not a
$this->db->where('password' => $password);  // nesessary changes but you can try it
$q = $this->db->get('tbluser');
return $q->result(); // try result() instead of row()
}
$user['id']
$user['name']
$user['password'] 
$user['email']
$user['number']
$user['university']
$data['user'] = new stdClass();
$data['user'] = $this->UserModel->getUser($cond);