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: 36.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

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

Aumente sua produção em PHP

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

Leitura recomendada

Configurando Apache + MySQL + Manipulação de dados com PHP

Stored Procedures usando o MySQL e PHP

Paginando resultados com a classe Generic Easy Pagination

Provendo dados em um servidor PostgreSQL através do Apache e PHP

Uma introdução à classe ADODB

  
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




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts