bindValue error - php mysql connection

Asked

Viewed 36 times

0

I’m making a login system using php and mysql. But I’m having an error that I can’t solve.

Fatal error: Uncaught Error: Call to a Member Function bindValue()

Could someone help me ? follows below my code to see if there are any errors.

<?php
Class valida
{
    private $pdo;
    public $msgErro = "";

    public function conectar($nome, $host, $usuario, $senha)
    {
        session_start();
        global $pdo;
        global $msgErro;
        try{
            $pdo = new PDO("mysql:dbname=".$nome.";host=".$host,$usuario,$senha);
        } catch (PDOException $e){
            $msgErro = $e->getMessage();
        }

    }
    public function logar($email, $senha)
    {
        global $pdo;
        global $msgErro;
        //verificar se o email e senha estão cadastrados
        $sql->bindValue(":e",$email);
        $sql->bindValue(":s",md5($senha));
        $sql = $pdo->prepare("SELECT id_enf from enfermeiro WHERE email = :e AND senha = :s");
        $sql->execute();
        if($sql->rowCount()>0)
        {
            //entrar no sistema (sessao)
            $dado = $sql->fetch();
            session_start();
            $_SESSION['id_enf'] = $dado['id_enf'];
            return true; //logado com sucesso
        }
        else
        {
            return false; //nao foi possivel logar
        }
    }

}


?>

1 answer

0

You’re trying to call the bindValue in the variable $sql, before it is even initiated, see:

<?php

    public function logar($email, $senha)
    {
        global $pdo;
        global $msgErro;
        //verificar se o email e senha estão cadastrados
        $sql->bindValue(":e",$email); // essa variável não existe ainda, ela é iniciada duas linhas depois
        $sql->bindValue(":s",md5($senha));
        $sql = $pdo->prepare("SELECT id_enf from enfermeiro WHERE email = :e AND senha = :s");
        $sql->execute();
    }


?>

The right thing would be:

<?php

    public function logar($email, $senha)
    {
        global $pdo;
        global $msgErro;
        //verificar se o email e senha estão cadastrados
        $sql = $pdo->prepare("SELECT id_enf from enfermeiro WHERE email = :e AND senha = :s");
        $sql->bindValue(":e",$email);
        $sql->bindValue(":s",md5($senha));
        $sql->execute();
    }


?>

Browser other questions tagged

You are not signed in. Login or sign up in order to post.