对象中未定义的变量

时间:2014-02-05 23:52:05

标签: 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_email is undefined

$this->mp->createAlias( $result->$user_email );
// $this->mp is defined elsewhere

1 个答案:

答案 0 :(得分:0)

SELECT 
user_id,
FROM users
WHERE user_email = :user_email 

您的SQL无效,请在user_id之后删除逗号。

SELECT 
user_id
FROM users
WHERE user_email = :user_email 

最好使用PDOException。 (例如):

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);
}

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

如果你没有从对象获取属性,那么它是未定义的,你不知道它,或者你的语法错误,或者你需要在PDO中设置获取类型。 试试这个:

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