2015-11-02 115 views
-1

我在PHP PDO中準備並執行查詢有以下定義。查詢被執行,但最終我收到消息:注意:試圖獲取非對象的屬性。我試過已經用FETCH_COLUMN但是是一樣的。有人能幫助我嗎?獲取函數PDO返回錯誤

public function GetIDbyname($name){ 

      try{ 

       $stm = $this->pdo 
       ->prepare("SELECT id FROM prozess WHERE name = ?"); 


       $stm->execute(array($name)); 
       $r = $stm->fetchAll(PDO::FETCH_OBJ); 

       return $r->id; 
      } catch (Exception $e){ 
       die($e->getMessage()); 
      } 
     } 
+3

請檢查var_dump($ r) –

+0

檢查'$ stm'和'$ r'是否爲空。錯誤說,你在某處做'null-> someFunctionCall()'而不是'object-> someFunctionCall()'爲什麼用'?'而不是命名參數? 'WHERE name =:name' /' - > execute(array(':name'=> $ name))' – Justinas

+0

$ stm將會爲空,因爲它在函數中,而我沒有看到它聲明爲參數或任何東西。 – Mattigins

回答

1

fetchAll返回所有行在多維數組$r是一個對象數組,而不是對象本身。獲得結果的正確方法是$r[0]->id。或者:

如果您只想獲取單個行,請使用$stm->fetch()

+0

嗨THX爲您的答案!但沒有工作。你說的絕對正確,但我不知道我的問題在哪裏無效。我使用fetch(),因爲你也說了什麼也沒有什麼 –

+0

這是什麼意思,「沒有」?你試過'var_dump($ r)'來確認你所得到的? – deceze

+0

是的,我沒有檢查var_dump($ r),這就是答案:bool(false)array(2){[「id」] => int(85)[0] => int(85)} Can你能幫我理解嗎? –