2011-02-18 75 views
0

我不斷收到此errror的屬性:試圖讓非對象(2)

試圖讓非對象的屬性。

問題是,當我的數據庫中的這個字段填充了例如'1988-12-01 15:13:14'時,SQL日期字段名爲'sterfdatum'。那麼我的代碼沒有問題。但是,當字段是這樣的'0000-00-00 00:00:00',並且我試圖從我的數據庫中獲得這個錯誤顯示。

這是我的模型:

<?php 

public function get_artist($last_name = NULL , $front_name = NULL, $language = 'nl') 
    { 
     // infoNL as language so language can be used in the View file 
     if($language == 'nl') 
     { 
      $this->db->select('naam, voornaam, geboortedatum, geboorteplaats, foto, infoNL as language, sterfdatum') 
       ->from('kunstenaar') 
       ->where('naam', $last_name) 
       ->where('voornaam', $front_name) 
       ->limit(1); 

      return $this->db->get()->row(); 
     } 
     elseif($language == 'en') 
     { 
      $this->db->select('naam, voornaam, geboortedatum, geboorteplaats, foto, infoEN as language, sterfdatum') 
       ->from('kunstenaar') 
       ->where('naam', $last_name) 
       ->where('voornaam', $front_name) 
       ->limit(1); 

      return $this->db->get()->row(); 
     } 

    } 

在我看來,我有這個

if($artist->sterfdatum != '0000-00-00 00:00:00') 
     { 
      $birthYear = date('Y', strtotime($artist->geboortedatum)); 
      $dieYear = date('Y', strtotime($artist->sterfdatum)); 

     } 
$artist->sterfdatum != '0000-00-00 00:00:00' And here is the problem. 

回答

2
if(isset($artist->sterfdatum) && $artist->sterfdatum != '0000-00-00 00:00:00') { 
$birthYear = date('Y', strtotime($artist->geboortedatum)); 
$dieYear = date('Y', strtotime($artist->sterfdatum)); 
} 

應該工作

+0

+1是的,我同意。 – 2011-02-18 14:54:29

0

如果我理解正確的話,好像是你分配一個可變的藝術家,不是你的觀點的對象。

如果在數據庫中找不到與您的查詢匹配的內容,則可能會發生此錯誤。

假設你的方法get_artist()返回NULL,你應該嘗試這樣的事:

if(isset($artist)) 
{ 
    if($artist->sterfdatum != '0000-00-00 00:00:00') 
    { 
     $birthYear = date('Y', strtotime($artist->geboortedatum)); 
     $dieYear = date('Y', strtotime($artist->sterfdatum)); 
    } 
} 

但是你應該看看什麼是在$藝術家值發生錯誤時作出正確的測試它。

希望它可以幫助你。