0

だから私はmysqliオブジェクトを含むクラス変数を持つphpの単純なユーザークラスに取り組んでいますが、エラーが発生し続けます:

致命的なエラー:行 Xの* /classes/user.phpの非オブジェクトに対するメンバ関数 real_escape_string() の呼び出し

すべてを確認しましたが、動作するはずですが、動作しません。何とかして。これは私のコードです:

namespace bibliotheek;

class user
{
    private $mysql;

    private $logged_in = false;
    private $user_data = null;      //ARRAY: user_id, e-mail, password, bevoegdheid, naam, achternaam, adres, postcode, stad

    function __construct(\mysqli $mysql, $salt)
    {
        $this->mysql = $mysql;
    }

    public function login($email, $pass, $hash = false)
    {
        $email = $this->mysql->real_escape_string($email);
        if($hash == false)
            $pass  = sha1($this->salt.$pass);

        $query  = "SELECT *
                   FROM gebruikers
                   WHERE gebruikers.email = '$email' AND gebruikers.password = '$pass'";

        $result    = $this->mysql->query($query);
        $user_data = $result->fetch_assoc();

        if($user_data == null)
            return;

        $this->logged_in = true;
        $this->user_data = $user_data;
        $this->create_cookies($email, $pass);
    }
}

そして、これは mysqli オブジェクトがクラスに渡される方法です:

$mysql  = new mysqli($cfg['mysql_server'], $cfg['username'], $cfg['password'], $cfg['database']);
$user   = new bibliotheek\user($mysql, $cfg['salt']);

mysql ログイン データが正しいことを確認しました。

ここで本当に明白な何かが欠けているに違いありませんが、それを見ることができません。どんな助けでも大歓迎です。ありがとう!

4

2 に答える 2

0

私は本当に愚かです。ここに投稿したときにコードを少し圧縮しましたが、この部分は省略しました。

    $this->mysql = $mysql;
    $this->mysql = $salt;

今すぐ殺して。

于 2013-04-07T21:05:39.623 に答える