2

こんにちは、データベース内の一意のフィールドである電子メールでユーザーを取得するためのこのクエリがあります。

ただし、データを取得したい場合は、単に 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

あなたが私を助けることができればうれしいです!

4

2 に答える 2

5

SQLの文字列は引用符で囲む必要があるため、その前後の関数に到達しない限り、$emailSQLはエラーになります。''

ただし、とにかくPHP文字列をマッシュアップしてSQLを構築するべきではありません。バインドされたパラメーター(およびプリペアドステートメント)を指定してPDOまたはmysqli_ *を使用すると、引用符(およびエスケープ)が自動的に処理されます。

于 2012-06-14T15:03:42.093 に答える
1

まず、真剣にPDOを見てください。

email次に、列が文字列であると想像します。$emailそのため、クエリでは引用符で囲む必要があります (もちろん、徹底的にサニタイズした後...)。

WHERE email='$email'

PDO バージョン:

$pdo = new PDO(...);
$query = $pdo->prepare('SELECT id_user,nome,email,permissao,activo '.
                       'FROM   sys_users '.
                       'WHERE  email = ?');
$result = $query->execute(array($email));
于 2012-06-14T15:04:22.980 に答える