2015-11-02 141 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你能帮我理解吗? –