我正在查询数据库以定义变量:
$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
答案 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'] );