2

I have been trying to fix this error: PHP Fatal error: Call to a member function prepare() on string in /home/...../lib/library.php on line 91 I have also check this link: Reference - What does this error mean in PHP? and i don't seem to understand how to relate it to my problem at hand. Can anyone help? this is the script line affected:

public function Login($username, $password)
    {
        try {
            $db = DB();
            $query = $db->prepare("SELECT user_id FROM users WHERE (username=:username OR email=:username) AND password=:password");
            $query->bindParam("username", $username, PDO::PARAM_STR);
            $enc_password = hash('sha256', $password);
            $query->bindParam("password", $enc_password, PDO::PARAM_STR);
            $query->execute();
            if ($query->rowCount() > 0) {
                $result = $query->fetch(PDO::FETCH_OBJ);
                return $result->user_id;
            } else {
                return false;
            }
        } catch (PDOException $e) {
            exit($e->getMessage());
        }
    }
Community
  • 1
  • 1
Yomi
  • 63
  • 1
  • 2
  • 6
  • `DB()` is not returning an instance of `PDO`. See http://php.net/manual/en/book.pdo.php and http://stackoverflow.com/questions/5346186/pdo-call-to-a-member-function-prepare-on-a-non-object – Gerard Roche Aug 22 '16 at 19:25

1 Answers1

2

Your problem is here:

$db = DB();

If you were to var_dump() the $db variable you'd see it is equal to a string with a value of something like DB or DB().

It should be:

$db = new DB();
Tom Wright
  • 2,841
  • 4
  • 22
  • 30