0
I am just starting my study on PHPOO, leaving more of the area of Structured... And after some studies, I obtained a part of the knowledge, but when trying to make a search in the database to verify the existence of the following user, returned me the following error.
Fatal error: Uncaught Error: Call to a Member Function prepare() on null in D: Programs xamp htdocs events.php:39 Stack trace: #0 D: Programs xamp htdocs events.php(48): Usuarios->getUsuario('daniel@servidor...', '123') #1 {main} thrown in D: xamp htdocs events.php on line 39
<?php
class Conexao{
    private static $host = "localhost";
    private static $db = "esa";
    private static $user = "root";
    private static $pass = "";
    public function __construct(){}
    public function __clone(){}
    public function getHost(){return self::$host;}
    public function getDB(){return self::$db;}
    public function getUser(){return self::$user;}
    public function getPass(){return self::$pass;}
    public function connect(){
        try {
            $this->conexao = new PDO("mysql:host=".$this->getHost().";dbname=".$this->getDB()."", $this->getUser(), $this->getPass());
        }
        catch (PDOException $i)
        {
            die("Erro: <code>" . $i->getMessage() . "</code>");
        }
    }
}
class Usuarios{
    private $email;
    private $senha;
    public function __construct(){}
    public function getUsuario($email, $senha){
        $this->email = $email;
        $this->senha = md5($senha);
        $cn = new Conexao();
        $con = $cn->connect();
        $sql = $con->prepare("SELECT * FROM tb_usuarios WHERE email = :email AND senha = :senha");
        $sql->bindValue(":email", $this->email);
        $sql->bindValue(":senha", $this->senha);
        $sql->execute();
        echo $sql->rowCount();
    }
}
$user = new Usuarios();
echo $user->getUsuario("[email protected]", "123");
?>
I believe the connection is invalid because the class attributes are as
staticand in the connection method you use$this->getHost(). I believe that it is best to leave everything static. That$cn = new Conexao();it gets really weird.– rray