Fatal error: using $ this if not in the context of an object in

I have this class to connect to a database mysqlusing php/ mysqli:

class AuthDB {
    private $_db;

    public function __construct() {
        $this->_db = new mysqli(DB_SERVER, DB_USER, DB_PASS, DB_NAME)
        or die("Problem connect to db. Error: ". mysqli_error());
    }

    public function __destruct() {
        $this->_db->close();
        unset($this->_db);
    }
}

I now have a page for the list user:

require_once 'classes/AuthDB.class.php';

session_start();

$this->_db = new AuthDB(); // error For This LINE
$query = "SELECT Id, user_salt, password, is_active, is_verified FROM Users where email = ?";
$stmt = $this->_db->prepare($query);

        //bind parameters
        $stmt->bind_param("s", $email);

        //execute statements
        if ($stmt->execute()) {
            //bind result columnts
            $stmt->bind_result($id, $salt, $pass, $active, $ver);

            //fetch first row of results
            $stmt->fetch();

            echo $id;


        }

Now, I see this error:

Fatal error: Using $this when not in object context in LINE 6

How to fix this error ?!

+5
source share
1 answer

Like the error, you cannot use $thisoutside the class definition. To use $_dboutside the class definition, first do publicinstead private:

public $_db

Then use this code:

$authDb = new AuthDb();
$authDb->_db->prepare($query); // rest of code is the same

-

, $this. $this . , foo AuthDB, $_db foo, $this, PHP, , $_db , foo .

, StackOverflow: PHP: self vs $this

+6

All Articles