Call to undefined method PDO :: bindParam (), how do I resolve it?

0

So, guys, I'm starting OO studies and I decided to take a look at PDO, but it's not going to happen, please help me:



class Cliente { private $nome; private $email; private $telefone; protected $cpf; protected $senha; private $pdo;

public function __construct() { try{ $this-> pdo = new PDO ("mysql:host=localhost; dbname=clientes;","root",""); } catch (PDOException $erro){ echo "Não Foi possivel conectar ao Banco: ".$erro->getMessage(); }

} public function cadastrar($nome, $email, $cpf, $data_nascimento, $telefone, $endereco){ $this-> pdo -> prepare ("select CPF from cliente where CPF = ':cpf'"); $this-> pdo -> bindParam (':cpf', $cpf); $this-> pdo -> execute();

           if ($this->pdo -> rowCount() >= 1){
               echo "Cadastro já existente.";
           } else { 
           try {
           $this->pdo->prepare("INSERT INTO clientes(nome, email, data_naschimento, telefone, endereco) 
              values (':nome',':endereco',':email',':data_nascimento', ':telefone', ':endereco')");
              $this->pdo -> bindParam(':nome', $nome);
              $this->pdo -> bindParam (':endereco', $email);
              $this->pdo -> bindParam (':email', $data_nascimento);
              $this->pdo -> bindParam (':data_nascimento', $telefone);
              $this->pdo -> bindParam (':telefone', $endereco);
              $this->pdo -> execute();
              echo "Dados cadastrados com Sucesso";
           }
           catch (PDOException $erro){
               echo "Não foi possivel inserir os dados no banco: ".$erro->getMessage();

           }

    }

}

public function deleteCadastro ($ cpf) {            // Execute a query that erases the data from the database     try {            $ this - > pdo - > prepare ("DELETE FROM CUSTOMER WHERE CPF = ': cpf'");            $ this - > pdo - > bindParam (': cpf', $ cpf);            $ this - > pdo - > execute ();     }     catch (PDOException $ error) {            echo "Could not delete data:". $ error-> getMessage ();     }     if ($ this -> pdo -> rowcount () > = 1) {            echo "All data has been deleted successfully.";        }    }    public function updateName ($ newName, $ oldName) {            // Execute a query that updates the name in the database            try {            $ this - > pdo - > prepare ("CLIENTS UPDATE SET NAME = ': name' WHERE NAME = ': name2'");            $ this - > pdo - > bindParam (': name', $ newName);            $ this - > pdo - > bindParam (': name2', $ oldName);            } catch (PDOException $ error) {                echo "Could not update data". $ error-> getMessage ();            }    }    public function updateEmail () {        // Execute a query that updates the database    }    public function updateSenha () {        // Execute a query that updates the database    }    public function displaysData () {        // Execute a query that gives a select in the database

}    public function getPdo () {

}

}

    
asked by anonymous 08.12.2016 / 01:05

1 answer

5

The method bindParam belongs to the PDOStatement . The prepare method of class PDO returns a PDOStatement :

$stmt = $this->pdo->prepare("QUERY");
$stmt->bindParam(":param", $value);
$stmt->execute();

When using prepare , assign its return to a variable, and use it to associate the parameters with the query with bindParam .

In your case, we can change the following excerpt:

       try {
          $this->pdo->prepare("INSERT INTO clientes(nome, email, data_naschimento, telefone, endereco) 
          values (':nome',':endereco',':email',':data_nascimento', ':telefone', ':endereco')");
          $this->pdo -> bindParam(':nome', $nome);
          $this->pdo -> bindParam (':endereco', $email);
          $this->pdo -> bindParam (':email', $data_nascimento);
          $this->pdo -> bindParam (':data_nascimento', $telefone);
          $this->pdo -> bindParam (':telefone', $endereco);
          $this->pdo -> execute();
          echo "Dados cadastrados com Sucesso";
       }
       catch (PDOException $erro){
           echo "Não foi possivel inserir os dados no banco: ".$erro->getMessage();

       }

To:

       try {
          $stmt = $this->pdo->prepare("INSERT INTO clientes(nome, email, data_naschimento, telefone, endereco) 
          values (':nome',':endereco',':email',':data_nascimento', ':telefone', ':endereco')");
          $stmt -> bindParam(':nome', $nome);
          $stmt -> bindParam (':endereco', $email);
          $stmt -> bindParam (':email', $data_nascimento);
          $stmt -> bindParam (':data_nascimento', $telefone);
          $stmt -> bindParam (':telefone', $endereco);
          $stmt -> execute();
          echo "Dados cadastrados com Sucesso";
       }
       catch (PDOException $erro){
           echo "Não foi possivel inserir os dados no banco: ".$erro->getMessage();

       }
    
08.12.2016 / 01:25