簡體   English   中英

PHP 在嘗試獲取非對象的屬性時拋出錯誤

[英]PHP throwing an error trying to get property of a non-object

這是一個老栗子,但我看不到我的代碼中的錯誤。 我在 Windows 10、VSCode 中並使用 Codeigniter 3 框架。 我正在嘗試刪除一條記錄,但還添加了一條警報,說明該記錄已成功刪除。 因此,首先我使用 id 並獲取記錄,將其保存為會話數據,刪除記錄,然后使用保存的數據發出警報,例如“您已成功刪除 John Smith 的數據庫條目”。 這是我的控制器方法:

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();
  }
}

這工作正常,警報已成功發布,但是當我刷新頁面時,PHP 拋出一個 (Severity:notice) 錯誤“試圖獲取非對象的屬性”。 錯誤行是方法的第二行,即 $method->firstname。

我在變量 $member 上運行了 var_dump,它絕對是一個對象,用 result->row() 返回。

誰能告訴我出了什么問題?

您正在獲取 $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() 返回一個對象 - 但它是否返回您期望的對象? 所有預期的屬性都存在嗎?

其次,誰或什么在調用這個函數? 如果您刷新頁面,顯然 member_delete() 將使用 $id 值調用,該值不應再存在(因為您在最后一個循環中刪除了它)。 因此,要么 $id 出於某種原因是持久的,要么使用過時的數據調用它

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM