Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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

  • 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.