Php 尝试获取非对象CodeIgniter的属性
我是CodeIgniter的新手。我正在使用带有表单验证的表单。我的问题是,当我按“编辑详细信息”时,会出现一个错误。“正在尝试获取非对象的属性” 这是我的观点:user/edit_user.phpPhp 尝试获取非对象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>
<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);