Php 获取函数PDO返回错误

Php 获取函数PDO返回错误,php,pdo,Php,Pdo,我在PHP PDO中有以下准备和执行查询的定义。查询已执行,但最终我收到消息:注意:尝试获取非对象的属性。我已经尝试使用获取列,但都是一样的。有人能帮我吗 public function GetIDbyname($name){ try{ $stm = $this->pdo ->prepare("SELECT id FROM prozess WHERE name = ?");

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

fetchAll
返回多维数组中的所有行
$r
是一个对象数组,而不是对象本身。获得结果的正确方法是
$r[0]->id
。或:


如果只想提取一行,请使用
$stm->fetch()

请检查var\u dump($r)检查
$stm
$r
是否为空。错误说明您在某处执行
null->someFunctionCall()
而不是
对象->someFunctionCall()
还有为什么使用
而不是命名参数
其中name=:name
/
->execute(array(':name'=>$name))
$stm将为null,因为它在函数中,我没有看到它被声明为参数或任何东西。FETCH\u列将值作为数组返回,因此您应该将其作为$r[0]Hi THX获取以获得答案!但它不起作用。你说的绝对正确,但我不知道哪里是我的问题,这是不工作。我用了fetch(),就像你说的一样,什么都没有这是什么意思,“什么都没有”?!您是否尝试
var_dump($r)
确认您得到了什么?是的,我与var_dump($r)进行了检查,答案是:bool(false)数组(2){[“id”]=>int(85)[0]=>int(85)}您能帮助我理解这一点吗?这意味着没有找到匹配的行,或者存在错误<代码>变量转储($stm->errorInfo())