Acorda pra Web!

Tecnologia que vai mudar nossas vidas, depois do café.

PDO: Bancos de dados no PHP5

  • PDO substitui todas as funções de bancos de dados
  • Não tem PDO no PHP4, tem no PHP5, e só vai ter PDO no PHP6
  • PDO é orientado a objetos
  • PDO é mais rápida do que as demais funções de bancos de dados
  • Você deveria usar PDO
  • Coisas simples são realmente simples no PDO
  • Coisas complexas, são bem mais simples com PDO

É tão fácil…

…Conectar ao banco

PHP
<?php
$banco = new PDO('mysql:host=localhost;dbname=nome_do_banco', 'username','password');
?>

…Pegar um registro baseado em um campo

PHP
<?php
$banco = new PDO('mysql:host=localhost;dbname=nome_do_banco', 'username','password');
$dados_do_cliente = $banco->query('SELECT * FROM clientes WHERE id = 1')->fetch();
?>

…Vários registros de um banco de dados

PHP
<?php
$banco = new PDO('mysql:host=localhost;dbname=nome_do_banco', 'username','password');
$todos_os_clientes = $banco->query('SELECT * FROM clientes')->fetchAll();
?>

…Registros com muitos filtros e condições

PHP
<?php
$banco = new PDO('mysql:host=localhost;dbname=nome_do_banco', 'username','password');
$filtros = array(
'nome'=>'João',
'departamento'=>'TI',
'unidade'=>'Jabaquara',
$consulta = $banco->query('SELECT * FROM clientes WHERE nome = :nome AND departamento = :departamento AND unidade = :unidade')
$clientes_pelo_filtro = $consulta->execute($filtros);
?>

…Incluir dados

PHP
<?php
$banco = new PDO('mysql:host=localhost;dbname=nome_do_banco', 'username','password');
$novo_cliente = array('nome'=>'José','departamento'=>'TI','unidade'=>'Paulista');
$banco->prepare('INSERT INTO clientes (nome,departamento,unidade) VALUES (:nome,:departamento,:unidade)')->execute($novo_cliente);
?>

…Incluir MUITOS dados

PHP
<?php
$banco = new PDO('mysql:host=localhost;dbname=nome_do_banco', 'username','password');
$varios_clientes = array(
0=>array('nome'=>'José','departamento'=>'TI','unidade'=>'Paulista'),
1=>array('nome'=>'Marcos','departamento'=>'Infra','unidade'=>'Jabaquara'),
2=>array('nome'=>'Paulo','departamento'=>'Serviços,'unidade'=>'Bom Retiro')
);
$inserir = $banco->prepare('INSERT INTO clientes (nome,departamento,unidade) VALUES (:nome,:departamento,:unidade)');
foreach ($varios_clientes as $cliente) $inserir->execute($cliente);
?>

…Usar um loop pra iterar sobre os resultados

PHP
<?php
$banco = new PDO('mysql:host=localhost;dbname=nome_do_banco', 'username','password');
foreach ($banco->query('SELECT * FROM clientes') as $cliente) {
print_r($cliente);
}
?>

E tudo isso…

  • Sem sofrer com aquele monte de aspas e strings concatenadas
  • Sem precisar de preocupar com segurança, o PDO faz isso pra você
  • Com a mesma interface pra qualquer banco de dados, muito consistente

Tá esperando o que? Go, PHP5!

19 Respostas para “PDO: Bancos de dados no PHP5”

  1. Diogo diz:

    Sem duvida, muito bom o PDO! Este guia fica nos favoritos como referência!

  2. Hugo diz:

    Qual as vantagens de usar o PDO em relação a classe DB do Pear?

    http://pear.php.net/package/DB

  3. Alexandre diz:

    Hugo, a vantagem é a rapidez e portabilidade. PDO é uma extensão nativa do PHP, escrita em C, portanto muito mais rápida do que qualquer módulo PEAR, e sempre disponível sem que o PEAR tenha que ser instalado.

    O módulo DB do PEAR também está “velho”, foi substituído pelo MDB2, só é útil na verdade para quem precisa de uma aplicação que pode ser instalada em vários bancos de dados diferentes (MySQL e PgSQL por exemplo).

  4. Leonardo L Procópio diz:

    Muito show o post em brother, mas diz ai, e em relação a transação, como seria pra trabalhar com ela?

    grande abraço!

  5. Marcelo diz:

    Gostei muito do nome e da proposta de seu Blog. Parabéns!

    Abs,
    Marcelo

  6. Vilmar Spies diz:

    estou tentando conectar em um banco FIREBIRD através do PDO, mas esta me retornando o seguinte erro qdo tento inserir um registro no mesmo:


    Fatal error: Call to a member function prepare() on a non-object in C:\Instaladores\xampp\htdocs\OrcamentoMicrotek\application\business\dao\UsuarioDAO.php on line 19

    minha conexão:

    $this->con = new PDO("firebird:dbname=C:\\vilmar\\DADOSMICROTEK.FDB", "SYSDBA", "masterkey", array(PDO :: ATTR_PERSISTENT => $this->persistent));

    codigo da inserção

    $stmt = $this->conex->prepare("INSERT INTO usuarios (usu_nome, usu_username, usu_password) VALUES (?, ?, ?)");
    $stmt->bindValue(1, $usuario->nome);
    $stmt->bindValue(2, $usuario->username);
    $stmt->bindValue(3, md5($usuario->password));
    $stmt->execute();

  7. CodeIgniter: framework PHP ágil, robusto e de alta performance | desenvolvimento para web diz:

    [...] querys, manipular resultados de consultas, realizar transações (como se fosse PDO), fazer query caching, dentre [...]

  8. João diz:

    Meu servidor recusa o uso dos dois pontos como os da expressão:

    prepare(’INSERT INTO clientes (nome,departamento,unidade) VALUES (:nome,:departamento,:unidade)’)->execute($novo_cliente);
    ?>

    O q

  9. Rúbia diz:

    Achei esse post excelente, não conhecia a sigla “PDO”, e estou torcendo para talvez não precisar abandonar o PHP em prol do .Net por causa de questões comerciais!! puxa, gosto tanto do PHP!!

    Já sofri e perdi um tempo razoável validando queries e procurando um erro “invisível” que não permitia que meus dados fossem gravados no banco, acabando por desistir da query e adotar o CodeIgniter como framework que me livrou de todos os meus problemas.

  10. Reginaldo Morikawa diz:

    Estou usando esse PDO para um site que eu estou fazendo, e precisava de um retorno de quantos registros foram lidos na consulta, pois é para um sistema de busca. Se o resultado fosse 0 queria colocar uma mensagem que nada foi encontrada. Estou usando o foreach, como no seu último exemplo. Se puder ajudar agradeço. Sou iniciante em php, mas estou precisando usá-lo nesse projeto.

  11. Eduardo diz:

    e como faço pra executar???

  12. villas diz:

    Muito bom teu artigo

    brigado por partilhar !

  13. villas diz:

    como faz pra executar ??

    execute();

    um exemplo mais simples:

    $conn = new PDO(”mysql:host=localhost; dbname=banco”, “user”, “pass”);

    $stmt = $conn->prepare(”select * from tabela”); // ele prepara uma sintaxe
    $stmt->execute();

    ai faz um laço pra pegar as variáveis.

    Abraço

  14. Ronaldo diz:

    krai a locaweb tem pdo mas eu nao consigo pegar os dados no meu loop fiz tudo certinho no localhost ta funfando perfeito sakka so que na locaweb nao

  15. McJ HD diz:

    Mano, esse tal de pdo é foda mesmo. Valeu pelo artigo resumido, ótimo para quem ta iniciando nessa parada.
    Espero que você faça mais artigos sobre pdo. Só!!!

  16. CodeIgniter: framework PHP ágil, robusto e de alta performance | CodeIgniter Brasil diz:

    [...] databases, executar querys, manipular resultados de consultas, realizar transações (como se fosse PDO), fazer query caching, dentre [...]

  17. wryel diz:

    simples e diretoao ponto! muito bom!

  18. Antonio diz:

    é tudo muito simples tudo muito legal mas cara eu fiz arquivo com fiuções de banco e coloquei as funçoes basicas de banco!blz a função é a seguinte:

    */function pesquisar($pesquisa){
    try {
    $db= NewADOConnection(’mysql’);
    $result = $db->Connect(’localhost’, ‘root’, ‘root’, ‘provinha_brasil’);
    $teste= true;
    }
    catch (Exception $e){
    $teste= false;
    }
    if ($teste){
    try{
    $ADODB_FETCH_MODE = ADODB_FETCH_ASSOC;
    $result = $db->execute($pesquisa);
    $tabela = $result;
    return $result;
    $result = $db->close();
    }
    catch (Exception $e){
    echo (”Erro na Pesquisa”);
    }
    }
    else {
    return false;
    }
    }*/

    estou usado adodb lite ele me retorna o resutt set inteiro ja no pdo ele não retorna. obs : estou mudando para o pedo pélo fato de não ter o driver em adodb lite instalado.mas se o bicho ficar complicado vou ter que recorrer au bom e velho POG que cara esse negocio de fetch e fetch_array()ta foda de engolir!!!!

  19. Utilizando PDO no PHP | diz:

    [...] Fonte: Acordapraweb [...]

Deixar um Comentário

XHTML: Você pode usar essas tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>