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!

7 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 [...]

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>