сообщение пытается получить свойство необъекта в codeigniter

0

Просмотр: Любой поможет мне решить эту проблему, я получаю следующую ошибку. Ошибка PHP.

Severity: Notice

Message: Trying to get property of non-object

Filename: users/dataupdate.php

Line Number: 5

Это моя страница просмотра

dataupdate.php:

<form method="post" action="<?php echo base_url();?>user_controller/dataupdate/<?php echo $id;?>">
    <table width="280" border="1" align="center">
      <tr>
        <td>Name</td>
        <td><input type="text" name="name" value="<?php $result->name;?>"></td>
      </tr>
      <tr>
        <td>Email:</td>
        <td><input type="test" name="cnum" value="<?php $result->email;?>></td>
      </tr>
      <tr>
        <td>mobile</td>
        <td><input type="password" name="pass" value="<?php $result->mobile;?>></td>
      </tr>

      <tr>
        <td colspan="2" align="center"><input type="submit" name="sub" value="Submit"></td>

      </tr>
    </table>
</form>

Это мой контроллер

user_controller.php:

<?php
    class user_controller extends CI_controller
    {
        function __construct()
        {
            parent:: __construct();
            //$this->load->helper('form');
            //$this->load->helper('url');
            $this->load->model('user_model');
        }
        function add()
        {
            $data['title']="add";
            $this->form_validation->set_rules("name","Name","required");//text fildname,userdefine name
            $this->form_validation->set_rules("email","email","required");
            $this->form_validation->set_rules("password","password","required");
            $this->form_validation->set_rules("mobile","mobile","required");


            if($this->form_validation->run())
            {
                $this->user_model->insert($_POST);
                redirect("user_controller/display");
            }
            $this->load->view('users/add',$data);
        }
        function display()
        {
            $data['result']=$this->user_model->datadisplay();
            $this->load->view('users/datadisplay',$data);
        }
        function deletedata($id)
        {
            $data['result']=$this->user_model->deletequery($id);
            redirect("user_controller/display");
        }

        function updatedata($id)
        {
             $data['result']=$this->user_model->datadisplay(array("id"=>$id));
             if($this->form_validation->run())
             {
                  $_POST['id']=$id;
                  $id=$this->user_model->update($_POST);
             }
             $data['id']=$id;
             $this->load->view('users/dataupdate',$data);
        }
    }
?>

Это моя модель

user_model.php:

<?php
class user_model extends CI_model
{
    function insert($options=array()){
        if(isset($options['name']))//userdefine name
            $this->db->set('name',$options['name']);//db colomn name,text field name
        if(isset($options['email']))
            $this->db->set('email',$options['email']);
        if(isset($options['password']))
            $this->db->set('password',md5($options['password']));
        if(isset($options['mobile']))
            $this->db->set('mobile',$options['mobile']);
        $this->db->insert('user');
        return $this->db->insert_id();
    }
    function datadisplay()
    {
        $this->db->select('*');
        $this->db->from('user');
        if(isset($options['id']))
            $this->db->where('id',$options['id']);
        $query=$this->db->get();
        return $query->result();
    }
    function deletequery($id)
    {
        $this->db->delete('user',array('id'=>$id));
    }

    function update($options=array())
    {
        if(isset($options['name']))//userdefine name
            $this->db->set('name',$options['name']);//db colomn name,text field name
        if(isset($options['email']))
            $this->db->set('email',$options['email']);
        if(isset($options['mobile']))
            $this->db->set('mobile',$options['mobile']);
        if(isset($options['id']))
            $this->db->where('id',$options['id']);
        $query=$this->db->update('user');
        return $query;
   }
}

?>
  • 0
    Попробуйте добавить datadisplay($id) и измените if(isset($id)) $this->db->where('id',$id); в методе отображения данных в вашей модели.
Теги:
codeigniter

3 ответа

0

просто вы можете использовать объект или переменную как переменная @$variable

 <input name="ftp_name"  value="<?php echo $ftpDetails->ftp_name;?>" type="text">

изменить на:

<input name="ftp_name"  value="<?php echo @$ftpDetails->ftp_name;?>" type="text">
0

Когда вы получаете сообщение "пытается получить свойство не-объекта" в PHP, это означает, что вы пытаетесь получить доступ к атрибуту объекта, где объект не существует.

Рассмотрим это как пример. В вашем коде существует объект Car $ car, а объект Car имеет общедоступный атрибут $ speed. Обычно вы можете получить доступ к скорости объекта $ car с помощью $car-> скорости. Если какой-нибудь $ car установлен в null или какое-то другое значение, где это не объект Car, вы получите сообщение об ошибке при попытке получить доступ к атрибуту $ speed автомобиля.

Перед попыткой доступа к атрибуту скорости вы можете сделать что-то вроде:

if (is_a($car, 'Car')) {
    //do whatever you want when $car is a Car object
} else {
    //do whatever you want when $car is not a Car object
}

Вы также можете использовать это:

if ($car instanceof Car) {
    //do whatever you want when $car is a Car object
} else {
    //do whatever you want when $car is not a Car object
}

И, наконец, вы можете сделать это, что будет подавлять исключение, когда $ car не является объектом Car:

if (@$car->speed)
    //do whatever you want when $car is a Car object
} else {
    //do whatever you want when $car is not a Car object
}

Если $ car всегда должен быть объектом Car, и вы получаете ошибку, лучше всего будет избежать всей дополнительной логики и определить, где поврежден ваш объект автомобиля, и исправить его.

  • 0
    где я должен изменить свой код .........
  • 0
    В местах, где у вас есть что-то вроде $ result-> name, вы можете временно использовать @ $ result-> name?: '';. Это исключит исключение, но в конечном итоге вам нужно выяснить, почему $ result не установлен должным образом.
Показать ещё 1 комментарий
0

вам следует присвоить значение другой переменной, чем использовать ее.

<?php    
$tempname = $result[0]->name; 
$email = $result[0]->email;
$mob = $result[0]->mobile;
?>


<form method="post" action="<?php echo base_url();?>user_controller/dataupdate/<?php echo $id;?>">
<table width="280" border="1" align="center">
  <tr>
    <td>Name</td>
    <td><input type="text" name="name" value="<?php echo $tempname;?>"></td>
  </tr>
  <tr>
    <td>Email:</td>
    <td><input type="test" name="cnum" value="<?php echo $email;?>></td>
  </tr>
  <tr>
    <td>mobile</td>
    <td><input type="password" name="pass" value="<?php echo $mob;?>></td>
  </tr>

  <tr>
    <td colspan="2" align="center"><input type="submit" name="sub" value="Submit"></td>

  </tr>
</table>
</form>
  • 0
    нет это не работает
  • 0
    Обнаружена ошибка PHP. Серьезность: Сообщение об ошибке: Попытка получить свойство не-объекта. Имя файла: users / dataupdate.php Номер строки: 3 Обнаружена ошибка PHP. Серьезность: Уведомление. Сообщение: Попытка получить свойство не-объекта Имя файла: users /dataupdate.php Номер строки: 4 Обнаружена ошибка PHP. Уровень серьезности: Уведомление Сообщение: Попытка получить свойство не-объекта Имя файла: users / dataupdate.php Номер строки: 5
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню