PHP выдает ошибку при попытке получить свойство необъекта - PullRequest
0 голосов
/ 27 марта 2020

Это старый каштан, но я не вижу ошибки в своем коде. Я в Windows 10, VSCode и использую платформу Codeigniter 3. Я пытаюсь удалить запись, но также добавляю предупреждение о том, что запись была успешно удалена. Поэтому сначала я использую идентификатор и получаю запись, сохраняю ее как данные сеанса, удаляю запись, а затем выставляю предупреждение, используя сохраненные данные, например: «Вы успешно удалили запись в базе данных для Джона Смита». Вот мой метод контроллера:

function member_delete($id) {
  $member = $this->get_where($id);
  $this->session->set_userdata('firstname',$member->firstname);
  $this->session->set_userdata('lastname',$member->lastname);
  if($this->_delete($id)){
    $firstname = $this->session->userdata('firstname');
    $lastname = $this->session->userdata('lastname');
    $this->session->set_flashdata('success', 'You have successfully deleted the database entry for '.$firstname.' '.$lastname);
    $this->members();
  } else {
    $this->session->set_flashdata('failure','There has been an error and the record has not been deleted');
    $this->members();
  }
}

Это работает нормально, и оповещение успешно отправлено, но затем, когда я повторно ссылаюсь sh, страница PHP выдает ошибку (серьезность: уведомление) «Попытка получить свойство необъекта ». Строка ошибки - это вторая строка метода ie $ method-> firstname.

Я запустил var_dump для переменной $ member, и это определенно объект, возвращаемый с помощью result-> row () .

Может кто-нибудь сказать мне, что происходит не так?

1 Ответ

0 голосов
/ 28 марта 2020

Вы получаете $ member - но затем вы пытаетесь получить доступ к свойствам, не зная, что $ member был успешно заполнен в предыдущей строке

Так что я бы начал с:

$member = $this->get_where($id);
if ( is_a($member, "someClass") )
{
  $this->session->set_userdata('firstname',$member->firstname);
  $this->session->set_userdata('lastname',$member->lastname);
} else
   // process failure

Вы сказали, что var_dump () возвращает объект - но возвращает ли он ожидаемый объект? Все ли ожидаемые свойства существуют?

Во-вторых, кто или что вызывает эту функцию? Если вы делаете refre sh страницы, очевидно, что member_delete () вызывается со значением $ id, которого больше не должно быть (так как вы удалили его в последнем цикле). Так что либо $ id по какой-то причине является постоянным, либо что-то вызывает его с устаревшими данными

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...