Php 对象中未定义的变量

Php 对象中未定义的变量,php,pdo,Php,Pdo,我正在查询数据库以定义变量: $sth = $this->db->prepare( "SELECT user_id FROM users WHERE user_email = :user_email ;" ); $sth->execute( array( ':user_email' => $email_query ) ); $result = $sth->fetch(); 但是,当我尝试在函数中使用该变量时,它返回$result->user\u电子邮件未定义

我正在查询数据库以定义变量:

$sth = $this->db->prepare( "SELECT user_id
FROM users
  WHERE user_email = :user_email ;" );
$sth->execute( array( ':user_email' => $email_query ) );

$result = $sth->fetch();
但是,当我尝试在函数中使用该变量时,它返回
$result->user\u电子邮件未定义

$this->mp->createAlias( $result->$user_email );
// $this->mp is defined elsewhere
SQL无效,请删除用户id后的逗号

SELECT 
user_id
FROM users
WHERE user_email = :user_email 
最好使用PDO异常。(例如):

$user_email未定义的原因是您无法以这种方式访问返回的数组。您需要访问它的关联索引
fetch()
返回一个数组,因此需要像访问数组一样访问它,而不是像访问对象一样

如果您没有从对象获取属性,那么它可能是未定义的,并且您没有意识到它,或者您的语法错误,或者您需要在PDO中设置fetch类型。 试试这个:

$this->mp->createAlias( $result['user_email'] );

$result->user\u email如何?更正,
$result->user\u email
未定义您可以运行var\u dump($result);并分享结果?@Fred ii-对RPM发现输入错误的响应。@alias51,但代码现在与消息不一致。您仍然有$result->$user\u电子邮件。这也是你的实际代码吗?是的,对不起,那是个打字错误。问题仍然存在
try {    
   $sth = $this->db->prepare("
      SELECT 
        user_id
      FROM 
        users
      WHERE user_email = :user_email
   ");
   $sth->execute(array(
       ':user_email' => $email_query
   ));
   $result = $sth->fetch(PDO::FETCH_ASSOC);

} catch(PDOException $e) {
    echo $e->getMessage();
    var_dump($e);
}
$this->mp->createAlias( $result['user_email'] );