您好我已经通过电子邮件获取此查询,这是数据库中的唯一字段。
但是,当我想获取数据时,它只返回null。
这是代码
public function getUserByEmail($email)
{
$statement = "SELECT id_user,nome,email,permissao,activo FROM sys_users
WHERE email=$email";
try
{
$sth = $this->db->query($statement);
$sth->setFetchMode(PDO::FETCH_OBJ);
$rcs_users = $sth->fetchAll();
return $rcs_users;
}
catch(PDOException $e)
{
"DB Error".$e->getMessage();
}
}
各自的函数调用
$user_rcs = $user->getUserByEmail($email);
var_dump($user_rcs); //returns null
$_SESSION['email'] = $email;
$_SESSION['user'] = $user_rcs->nome;
$_SESSION['permissao'] = $user_rcs->permissao;
然后我收到此错误
Notice: Trying to get property of non-object in C:\xampp\htdocs\inacesso\admin\modules\auth\authhandler.php on line 24
很高兴你能帮助我!
答案 0 :(得分:5)
必须引用SQL中的字符串,因此除非$email
到达包含'
和'
的函数,否则SQL将会出错。
但是你不应该通过将PHP字符串混合在一起来构建SQL。将PDO或mysqli_ *与bound parameters (and prepared statements)一起使用,这将为您提供引用(和转义)。
答案 1 :(得分:1)
首先,请认真看看PDO。
其次我想象email
列是一个字符串。因此,您需要在查询中使用引号括起$email
(在对其进行消毒之后 当然......)
WHERE email='$email'
$pdo = new PDO(...);
$query = $pdo->prepare('SELECT id_user,nome,email,permissao,activo '.
'FROM sys_users '.
'WHERE email = ?');
$result = $query->execute(array($email));