Jump to content
Jeová Oliveira dos Santos

Erro no prepare();

Recommended Posts

Estou com erro ao chamar o meu prepare pra testar, segue abaixo o código das minhas classes PDO.

Classe Crud

<?php


class ClassCrud extends ClassConexao{
    #Atributos
    private $Crud;
    private $Contador;

    #Preparação das declarativas
    public function preparedsStatements($Query, $Parametros){
        $this->countParametros($Parametros);
        $this->Crud=$this->conectaDB()->prepare($Query);
        echo $this->Contador;
    }

    #Contador de paramentros
    private function countParametros($Paramentos){
        $this->Contador=count($Paramentos);
    }
}

Class Conexão

<?php


abstract class ClassConexao
{
    protected function conectaDB(){
        try{
            $Con=new PDO("mysql:host=localhost;dbname=cru","root","");
            return $Con;
         }catch (PDOException $Erro){
            return $Erro->getMessage();
        }
    }
}

Meu Index pra teste.

<?php include ("Includes/Header.php")?>

    <div class="Content">
        <?php
        include_once("Class/ClassConexao.php");
        include_once("Class/ClassCrud.php");
        $Crud=new ClassCrud();
       // $Crud->preparedsStatements('teste', array(1,2,3,4));
        var_dump($Crud->preparedsStatements("teste", array(1,2,3,4)));
        ?>
    </div>

<?php include ("Includes/Footer.php")?>

O que está errado? Me ajudem quem puder.

 

Share this post


Link to post
Share on other sites

Qual erro que está dando?

 

Coloque algo tipo

var_dump($Crud->preparedsStatements("SELECT * FROM teste", array(1,2,3,4)));

preparedsStatements altere alguns comandos para:

	$stmt = $this->conectaDB()->prepare($Query);
        $stmt->execute();

        return $stmt->fetchAll();

 

Share this post


Link to post
Share on other sites

Acontece a mesma coisa.

<?php


class ClassCrud extends ClassConexao{
    #Atributos
    private $Crud;
    private $Contador;

    #Preparação das declarativas
    public function preparedsStatements($Query, $Parametros){
        $this->countParametros($Parametros);
        $stmt = $this->Crud=$this->conectaDB()->prepare($Query);
        $stmt->execute();
        return $stmt->fetchAll();
    }

    #Contador de paramentros
    private function countParametros($Paramentos){
        $this->Contador=count($Paramentos);
    }
}

 

Share this post


Link to post
Share on other sites
22 horas atrás, Jeová Oliveira dos Santos disse:

}catch (PDOException $Erro){ return $Erro->getMessage(); }

Em vez de return dê um echo ou var_dump no erro. Eu simulei aqui o seu erro e acho que o banco de dados que vcoê está tentando conectar está errado.

Aqui funciona perfeitamente.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Gabrielvt14
      Olá pessoal,
       
      Estou querendo salvar no banco de dados um link (https://site.com.br) e quero utilizar PDO para isso.
      Mas pensei na hipótese do prepare barrar alguns caracteres, como, "/" (barra), ":" (dois pontos), etc...
       
      Alguém saberia me responder se o prepare barraria esses caracteres de links? Pois sei que ele faz uma filtragem na query para evitar ataques, mas não sei exatamente quais caracteres ele filtra.
       
      Desde já, grato!
    • By Gabrielvt14
      Olá pessoal,
       
      estou começando meus estudo em PHPOO, e estou fazendo um CRUD. Mas quando tento dar um insert no banco acusa erro no prepre e não consigo resolver este problema. Alguém poderia me ajudar?
       
      classe de conexao: Banco.php
      <?php class Banco { private $dns = 'mysql:host=localhost;dbname=alunos'; private $user = 'root'; private $pass = 'vertrigo'; public $pdo; public function __construct() { $this->conecta(); } public function conecta() { try { $this->pdo = new PDO($this->dns, $this->user, $this->pass); } catch (PDOException $e) { die('Erro ao conectar com a base de dados: ' . $e->getMessage()); } return $this->pdo; } }  
      classe de INSERT no banco (extends Aluno): Cadastrar.php:
      <?php require_once '../lib/Banco.php'; require_once 'Aluno.php'; class Cadastrar extends Aluno { protected $aluno; public function __construct($aluno) { $this->aluno = new Aluno($aluno); $this->insert(); } public function insert() { $pdo = new Banco(); $insert = "INSERT INTO alunos(nome, nota1, nota2, nota3, nota4) VALUES(:nome, :nota1, :nota2, :nota3, :nota4)"; $stmt = $pdo->prepare($insert); $stmt->bindValue(':nome', $this->aluno['nomeAluno']); $stmt->bindValue(':nota1', $this->aluno['nota1']); $stmt->bindValue(':nota2', $this->aluno['nota2']); $stmt->bindValue(':nota3', $this->aluno['nota3']); $stmt->bindValue(':nota4', $this->aluno['nota4']); if ($stmt->execute()) { header('Location: ../index.php'); } else { die('Erro ao cadastrar aluno'); } } } $cadastrar = new Cadastrar($_POST); classe de Aluno: Aluno.php
      <?php class Aluno { protected $nome; protected $media; protected $n1, $n2, $n3, $n4; public function __construct($dados) { $this->nome = $dados['nomeAluno']; $this->n1 = $dados['nota1']; $this->n2 = $dados['nota2']; $this->n3 = $dados['nota3']; $this->n4 = $dados['nota4']; } public function getNome() { return $this->nome; } public function getN1() { return $this->n1; } public function getN2() { return $this->n2; } public function getN3() { return $this->n3; } public function getN4() { return $this->n4; } }  
      O erro que apresenta quando tento o cadastro é:
      Fatal error: Call to undefined method Banco::prepare() in C:\Program Files\VertrigoServ\www\Projetos\ListaExercicios\Atividade_12\core\Cadastrar.php on line 21
       
      Não sei onde estou errando, alguém poderia me ajudar?
       
      Grato!
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.