Ir para conteúdo
Fórum Script Brasil
  • 0

Problema com CRUD...


Regis Lacerda

Pergunta

Boa noite galera...

Estou com um probleminha no meu CRUD para executar algumas inserções no Banco de Dados...

O erro é o seguinte, por favor, gostaria da ajuda de vocês..

Fatal error: Call to a member function prepare() on a non-object in C:\xampp\htdocs\zero\model\Main.class.php on line 46

Como vocês vão ver, estou forçando a inserção de dados direto no Usuario.php com um array...

Me ajudem, por favor.

Segue o código:

Conn.class.php

<?php

class Conn extends PDO{
        
      private $conn;

      public function __construct(){
        $config = parse_ini_file('../config/ini/config.ini');

        $dsn = "{$config['driver']}:host={$config['host']};dbname={$config['base']}";
        $this->conn = new PDO($dsn,$config['user'],$config['pass']);
      }        
    }
Main.class.php
<?php
    require_once('Conn.class.php');

    class Main extends Conn{
        
        private $conn;
                        
        function __construct(){}

        //Metodo generico para gravar informacoes no DB
        function novo($tabela,$dados){
            //Executo um foreach para separar as colunas de valores...
            foreach ($dados as $coluna=>$valor){
                //Passa as colunas para um Array...
                $colunas[] = "`$coluna`";
                //Passa os valores para um array...
                $valores[] = $valor;
                /*
                *===============================HOLDERS=============================
                *$holders[] = "?"
                *Como usamos o Prepared Statement e estamos inserindo os valores
                *dinamicamente, precisamos colocar dentro do VALUE as `interrogacoes`
                *correspondetes a cada campo. Desta forma, criamos um Array contendo
                *o valor de `?`
                *===================================================================
                */
                $holders[] = "?";
            }
            
            /*
            *Faco a implsao dos meus dados, pegando o meu Array e convertendo em 
            *Strings, separando por virgulas.
            */
            $colunas = implode(', ',$colunas);
            $holders = implode(', ',$holders);
            
            //Aqui eu chamo o $holders[], em VALUES da minha Query
            $sql = "INSERT INTO $tabela ($colunas) VALUES ($holders)";
            echo $sql;
            //Preparo meu SQL para ser executado atraves da variavel $sql
            $query = $this->conn->prepare($sql);
            /*
            *Aqui em execute(), chamamos a nossa Array que realmente possui algum valor.
            *Desta forma, toda vez que a minha Array $valores for executada, ele ira 
            *inserir uma valor em cada '?' da $holders[] dentro de VALUES da minha Query.
            */
            $query->execute($valores);
            
        }

        //Metodo generico para ler informacoes no DB
        function ler($tabela,$colunas){
            
            /*
            *Aqui crio a Query que sera chamada. Nela usamos valores dinamicos para
            *serem inseridos em minha variavel $sql.
            */
            $sql = "SELECT $colunas FROM $tabela";
                
                //SE $condicao não estiver vazia...
                if(!empty($condicao)){
                
                    /*
                    *COncatena em $sql WHERE $condicao. Ficaria da seguinte
                    *forma, o campo $sql concatenado
                    * SELECT $colunas FROM $tabela WHERE $condicao
                    */
                    
                    $sql .= " WHERE id = $condicao";
                }
            
            //Preparo meu SQL para ser executado atraves da variavel $sql
            $query = $this->conn->prepare($sql);
            //Executo meu objeto que esta com a query SQL preparada...
            $query->execute();
            /*
            *Com o metodo fetchAll(), eu listo todos os meus valores da Array.
            */
            $result = $query->fetchAll();

            //Por se tratar de uma consulta, preciso retornar o meu objeto...
            return $result;
        }

        //Metodo generico para alterar informacoes no DB
        function alterar($tabela,$dados,$id){
            /*
            *Aqui crio a Query que sera chamada. Nela usamos valores dinamicos para
            *serem inseridos em minha variavel $sql.
            */
            foreach($dados as $coluna => $valor) {
                $colunas[] = "`$coluna` = ?";
                $valores[] = $valor;
            }
            
            $valores[] = $id;
            
            $colunas = implode(', ', $colunas);
            
            /*
            *Com a '?' na minha condicao id eu passarei os valores atraves de um 
            *Prepared Statement
            */
            $sql = "UPDATE $tabela SET $colunas WHERE id = ?";

            //Preparo meu SQL para ser executado atraves da variavel $sql
            $query = $this->conn->prepare($sql);
            $query->execute($valores);
        }

        //Metodo generico para deletar informacoes no DB
        function delete($tabela,$base,$id){
            //Preparo meu SQL para ser executado atraves da variavel $sql
            //O '?' sera chamado atraves de um Prepared Statement
            $sql = "UPDATE $tabela SET " .$base."_ATIVO = 2  WHERE ?";
            
            //Preparo meu SQL para ser executado atraves da variavel $sql
            $query = $this->conn->prepare($sql);
            //Executo a minha Query passando o meu valor de $id.
            $query->execute(array($id));
        }
        
        /*
        //M�todo gen�rico para visualizar um �nico item no Banco de dados.
        function ver($tabela,$campos,$id){
            $sql = "SELECT $campos FROM $tabela WHERE $id";
        }
         * 
         */
        
    }
Usuario.php
<?php

    require_once('Main.class.php');
    
    class Usuario{
        private $query;
        
        public function __construct(){
            $this->query = new Main();
        }
        
        function novo_usuario(){
            $dados = array(
            'nome' => 'teste',
            'doc' => '123',
            'dept' => '1',
            'cargo' => 'Teste',
            'user' => 'teste',
            'pass' => 'teste',
            'ativo' => '1',
            );
            
            $this->query->novo('usuario',$dados);
        }
    }

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...