PDO - Introdução e conceitos

Uma introdução aos conceitos de utilização dessa extensão do PHP, que é uma forma nativa rápida e de fácil utilização de conectar a banco de dados, manipular e recuperar dados com métodos simples e poderosos.

[ Hits: 35.940 ]

Por: Adilson Santos da Rocha em 14/04/2008


Transações



Normalmente bancos como o mysql e postgreSQL trabalham em modo autocommit, ou seja, ao fazer uma alteração na estrutura do banco ou de tabelas ou ainda alterar ou excluir registros, essas alterações já passam a ser efetivas a partir da execução. Isso pode ser alterado de forma que esses tipos de alterações só sejam efetivas após a execução de um comando commit, além disso podemos voltar (rollback) as alterações caso alguma coisa aconteça como se fosse uma espécie de ctrl+z do sql.

Para trabalhar com transações utilizamos o método beginTransaction(), isso desliga o autocommit, e todas as operações de insert, update, alter table, drop table, comandos sql que alterem as estruturas dos bancos, tabelas ou registros só serão efetivados no banco após a execução do método commit() ou serão ignorados após um rollback. Ex.:

$db->beginTransaction();
$sql = "Insert into lancamento (clien_id,lanca_historico,lanc_valor) VALUES (231,"Pagto Conta Telefonica",235.12)";
try {
   $db->query($sql);
   $update = "Update conta_cliente set cclie_saldo = conta_cliente.cclie_saldo + $valor WHERE clien_id=231";
}
catch (PDOException $e){
   $db->rollback();
   print $e->getMessage();
}
?>

Nesse exemplo se qualquer uma das queries não for executada com sucesso por qualquer que seja o motivo, será executado um rollback fazendo com que nenhuma das duas operações seja efetivada no banco.

Conclusão

O uso das novidades da PDO com técnicas de captura e tratamento de exceções, juntando com outra boas práticas de programação e orientação a objetos traz muitas vantagens ao desenvolvimento de aplicações PHP.

Espero que os conceitos principais propostos, bem como algumas técnicas possam ser aplicadas com a PDO tenham sido compreendidas, pois uma vez tendo compreendido os conceitos facilita muito o desenvolvimento e a curva de aprendizado.

Estou trabalhando no desenvolvimento de uma pequena aplicação usando PDO para fixar melhor os conceitos e trabalhar um pouco melhor conceitos como MVC e OO.

Até a próxima, obrigado.

Página anterior    

Páginas do artigo
   1. Introdução
   2. Conetando e executando queries
   3. Transações
Outros artigos deste autor

Engenharia de Software - Fazer melhor o software e fazer o software melhor

Ninguém planeja fracassar, mas muitos fracassam por não planejar

Aumente sua produção em PHP

Leitura recomendada

Executando comandos DML em base de dados MySQL através do Eclipse PHP (Bônus: Temas e Fontes no Eclipse)

Servidor Web com Fedora Core 7

Sistema PDV com PHP-GTK2 e ACBrMonitor (parte 1)

Gallery - Álbum de fotos no seu site

Abordagem exemplificada à Orientação a Objetos com PHP

  
Comentários
[1] Comentário enviado por edirlf em 14/04/2008 - 12:45h

Já está nos favoritos. Parabéns.

[2] Comentário enviado por ygorth em 14/04/2008 - 15:02h

Parabéns.

Excelente artigo para introdução de PDO, direto ao ponto!

[3] Comentário enviado por JhoniVieceli em 15/04/2008 - 13:33h

Isso ai Adilson vou add nos meus favoritos.

Boa pra caramba o artigo e de fácil entendimento

abraço!

[4] Comentário enviado por denis.roschel em 13/06/2008 - 09:05h

Parabéns pelo artigo! Muito didático

[5] Comentário enviado por admtempos em 01/06/2009 - 12:27h

Muito Bom este post principalmente para quem esta começando agora

[6] Comentário enviado por will fernando em 10/08/2009 - 15:00h

muito bom .. parabens !

[7] Comentário enviado por mbmaciel em 31/01/2010 - 16:48h

Artigo de alto nivel e muito bem escrito. Parabens!

[8] Comentário enviado por henbran em 26/05/2010 - 08:56h

Bom Dia.
ESTOU COM UMA DÚVIDA EM HERANÇA EXTENDS

tenho 1 classe:
___________________________________
class A{
public function funcaoA(){
//detalhes
}
}
ººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººº

Então tenho outra classe:
___________________________________
class B extends A{
public function funcaoA(){
//detalhes
}
}
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
Quando tento instanciar a classe B, sendo estendida da classe A, não instancia.
ex. $instanciaB = new B(); // não funciona.
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Se tiro o extends A da declaração da classe B (ficando assim: class B{ ... }), então instancia.
................................................................................................................
Já cheguei a testar todas as classes vazias, tentando saber se haveria algo de errado com as functions, porém mesmo assim continua no mesmo problema.
*******************************************************************************************
POR FAVOR, COMO EU DEVERIA FAZER ENTÃO???

[9] Comentário enviado por removido em 24/12/2010 - 15:46h

Muito bom. Parabéns!


Contribuir com comentário