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!


17/12/2007 às 3:16 pm
Sem duvida, muito bom o PDO! Este guia fica nos favoritos como referência!
17/12/2007 às 11:54 pm
Qual as vantagens de usar o PDO em relação a classe DB do Pear?
http://pear.php.net/package/DB
18/12/2007 às 7:23 am
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).
28/12/2007 às 5:40 pm
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!
29/1/2008 às 2:01 am
Gostei muito do nome e da proposta de seu Blog. Parabéns!
Abs,
Marcelo
18/4/2008 às 2:47 pm
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();
14/7/2008 às 10:53 am
[...] querys, manipular resultados de consultas, realizar transações (como se fosse PDO), fazer query caching, dentre [...]