Array
(
)

Crud Completo genérico em PHP com PDO

PHP
Frederico Brigatte***
   - 02 mai 2014

Galera, boa tarde. Como que poderia fazer um CRUD completo com INSERT, DELETE, UPDATE e SELECT genérico em PHP com PDO? Gostaria de utilizar esse CRUD para qualquer tabela do meu banco de dados. Alguém pode me ajudar? Agradeceria muito.

Marcio Araujo
   - 02 mai 2014

boa tarde FREDERICO BRIGATTE***.

da uma lida neste artigo,

http://www.devmedia.com.br/crud-com-php-pdo/28873

Frederico Brigatte***
   - 02 mai 2014

Obrigado pelo retorno. Estou tentando fazer um genérico, ou seja, não ter que ficar re-escrevendo código para as tabelas que tenho no meu banco. Gostaria que fosse feito apenas uma vez e servisse para qualquer tabela. Até o momento fiz o SELECT, somente assim: SELECT * FROM $tabela. Como que faço para deixar mais dinâmica esse select?

Frederico Brigatte***
   - 02 mai 2014

Alguém?

Aldair Natan
   - 02 mai 2014

Olá Frederico,

olhe o link do github.
https://github.com/aldisondiego/PDOFirstLayer

abra o PDOFirstLayer

depois abra o test,

vc vai entender
Espero ter ajudado! =)

Frederico Brigatte***
   - 03 mai 2014

É genérico esse crud? Vou abrir agora. Agradeço a ajuda, mas eu quero um CRUD que MONTE as SQLs pra mim, ou seja, informo a tabela. Queria fazer um que pudesse usar em qualquer tabela, sem a necessidade de refazer os métodos.

Marcio Araujo
   - 03 mai 2014

desculpa Frederico. não sei bem.

Frederico Brigatte***
   - 03 mai 2014

Gostaria de algo assim, mas em pdo:

#Código

   public function selecionaTudo($objeto){
       $sql = "SELECT * FROM ".$objeto->tabela;
       if($objeto->extras_select!=NULL):
          $sql .= " ".$objeto->extras_select;
       endif;
//       echo $sql.'<br />';
       return $this->executaSQL($sql);
   }//fim selecionaTudo

Frederico Brigatte***
   - 03 mai 2014

Ta dificil.

Luxu
   - 04 mai 2014

E pq vc num monta em PDO, já que está dificil?

Marcio Araujo
   - 04 mai 2014


Citação:
E pq vc num monta em PDO, já que está dificil?


luxo, eu li sobre esse PDO, mas não entendi bem, poderia me passar essa informação da forma mais simples?
obrigado.

Frederico Brigatte***
   - 04 mai 2014

É em PDO mesmo que quero. A ajuda é que ta difícil, todos que tentaram me ajudar, agradeço, mas me passaram links do modo tradicional, eu quero um genérico, que possa ser utilizado pra qualquer tabela.Postei até um exemplo de select genérico, mas não tem WHERE.

Frederico Brigatte***
   - 04 mai 2014


Citação:
E pq vc num monta em PDO, já que está dificil?


É o que estou tentando fazer.

Aldair Natan
   - 10 mai 2014

Você pode criar um metodo na classe

por exemplo

OBS.: Não testei o código, é apenas um exemplo, mais acho que seria mais ou menos isso!

#Código

 function __construct(){
        $dsn = 'mysql:host=' . $this->db_host . ';dbname=' . $this->db_name;
        $opcoes = array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8");
        if (empty($this->conn)) {
            try {
                $this->conn = new PDO($dsn, $this->db_user, $this->db_pass, $opcoes);
            } catch (PDOException $e) {
                echo $e->getMessage();
            }
        }
    }

    //Execute Query
    private function query($tabela){
        try{
            $db = $this->conn->prepare('select * from {$tabela}');
            $db->execute();
        }catch(PDOException $e){
            return false;
        }
        $this->query = $db;
        return true;
    }

//-----------------classe que via retornar sua query
//Get Array List
    public function getAll($tabela){

        if($this->query($tabelal)){
            $dados = array();
            try{
                return $this->query->fetchAll(PDO::FETCH_ASSOC);
            }catch(PDOException $e){
                $e->getMessage();
            }
        }
        return null;
    }

Frederico Brigatte***
   - 10 mai 2014

Ok, mas e para os outros métodos, não sei como faz.

Frederico Brigatte***
   - 10 mai 2014

Como converto isso para PDO?

#Código

public function executaSQL($sql=NULL){
      if($sql!=NULL):
         $query = mysql_query($sql) or $this->trataerro(__FILE__,__FUNCTION__);
         $this->linhasafetadas = mysql_affected_rows($this->conexao);
         if(substr(trim(strtolower($sql)),0,6)=='select'):
             $this->dataset = $query;
             return $query;
         else:
             return $this->linhasafetadas;
         endif;
      else:
         $this->trataerro(__FILE__,__FUNCTION__,NULL,'Comando SQL nao informado na rotina', FALSE);
      endif;
   }//fim executaSQL
   
   public function retornaDados($tipo=NULL){
        switch(strtolower($tipo)):
            case "array":
               return mysql_fetch_array($this->dataset);
               break;
            case "assoc":
               return mysql_fetch_assoc($this->dataset);
               break;
            case "object":
               return mysql_fetch_object($this->dataset);
               break;
            default:
               return mysql_fetch_object($this->dataset);
               break;
        endswitch;
   }//fim retornaDados


A função array_key_exists em PDO, como que seria?