Ir para conteúdo
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.

 

Compartilhar este post


Link para o post
Compartilhar em outros 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();

 

Compartilhar este post


Link para o post
Compartilhar em outros 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);
    }
}

 

Compartilhar este post


Link para o post
Compartilhar em outros 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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

o erro está nessa linha: 

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por 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!
    • Por 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!
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.