Crud Completo genérico em PHP com PDO

PHP

02/05/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.
Frederico Brigatte***

Frederico Brigatte***

Curtidas 0

Respostas

Marcio Araujo

Marcio Araujo

02/05/2014

boa tarde FREDERICO BRIGATTE***.

da uma lida neste artigo,

[url]https://www.devmedia.com.br/crud-com-php-pdo/28873[/url]
GOSTEI 0
Antonio Felix

Antonio Felix

02/05/2014

uma ajudinha

[url]https://www.devmedia.com.br/introducao-ao-php-pdo/24973[/url]
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

02/05/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?
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

02/05/2014

Alguém?
GOSTEI 0
Aldair Gomes

Aldair Gomes

02/05/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! =)
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

02/05/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.
GOSTEI 0
Marcio Araujo

Marcio Araujo

02/05/2014

desculpa Frederico. não sei bem.
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

02/05/2014

Gostaria de algo assim, mas em pdo:

   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

GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

02/05/2014

Ta dificil.
GOSTEI 0
Luciano Martins

Luciano Martins

02/05/2014

E pq vc num monta em PDO, já que está dificil?
GOSTEI 0
Marcio Araujo

Marcio Araujo

02/05/2014

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.
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

02/05/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.
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

02/05/2014

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


É o que estou tentando fazer.
GOSTEI 0
Aldair Gomes

Aldair Gomes

02/05/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!

 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;
    }

GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

02/05/2014

Ok, mas e para os outros métodos, não sei como faz.
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

02/05/2014

Como converto isso para PDO?


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?
GOSTEI 0
POSTAR