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 [...]
22/8/2008 às 11:22 pm
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
25/9/2008 às 8:37 am
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.
28/10/2008 às 7:51 pm
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.
4/11/2008 às 10:27 am
e como faço pra executar???
24/11/2008 às 9:00 pm
Muito bom teu artigo
brigado por partilhar !
24/11/2008 às 9:07 pm
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
27/1/2009 às 1:49 pm
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
1/2/2009 às 10:40 pm
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ó!!!
2/3/2009 às 9:15 am
[...] databases, executar querys, manipular resultados de consultas, realizar transações (como se fosse PDO), fazer query caching, dentre [...]
28/4/2009 às 10:35 am
simples e diretoao ponto! muito bom!
11/5/2009 às 5:30 pm
é 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!!!!
12/2/2010 às 12:55 pm
[...] Fonte: Acordapraweb [...]