O que diabos é PDO no PHP?

O que é PDO no PHP

Fala pessoal tudo bem com vocês? No artigo de hoje iremos falar sobre PHP Data Objects ou para os mais rapidinhos PDO.

O PHP Data Objects (PDO) nada mais é do que uma camada de abstração de conexão com o banco de dados. Então ele é basicamente uma api de abstração de bancos de dados.

Nossa cara, você falou um kg e eu não entendi uma grama. Calma que eu vou te explicar nos mínimos detalhes. Vamos nessa?!

Bom de forma curta e grossa PDO é um tradutor para qualquer banco de dados que você queira realizar conexão. Entendeu agora? Como resultado disso, não precisaremos implementar algoritmos novos toda vez que porventura o banco de dados seja alterado de MySQL para PostGres.

Ele está no PHP desde a versão 5.1 e o bom disso tudo é que você pode escrever as mesmas rotinas e não depender do banco de dados que está usando, legal né?!

Exemplo de conexão com banco SQLite e MySQL usando PDO.

No código acima percebam como é bem simples realizar uma conexão utilizando PDO. Basta instanciarmos um objeto da classe PDO e no construtor desta classe passarmos os parâmetros de conexão como host, usuário, senha e nome do banco de dados. Depois disso, para realizar consultas usamos um dos métodos disponíveis PDO::query(consulta). Toda consulta me retornará um objeto do tipo statement e com ele eu posso percorrer os registros da minha consulta usando o método Statement::fetch();

Lembrando que o PDO não faz mágica tá? Ele não vai traduzir suas consultas SQL para outros bancos ou simular recursos que não existem. Ele é simplesmente uma API que te ajuda a usar vários tipos de bancos
de dados.

Espero que tenha ficado claro, se não vou te dar um DROP DATABASE, rs.

Segurança

Além de ser uma ótima API para usar com vários bancos o PDO também nos ajuda a manipular de forma segura dados desconhecidos que são injetados nas consultas evitando assim um ataque de SQL Injection. No entanto existe uma maneira correta de usar esse recurso tá? Não é de qualquer jeito, pois injetar uma variável diretamente na sua string sql não te garante nenhum nível de segurança.

Aqui um exemplo de como não injectar variáveis em suas consultas.

Nunca use o código da maneira que foi descrito na imagem logo acima, pois isso vai abrir uma brecha de segurança chamada SQL Injection. Imagine que um hacker passe na url o seguinte valor para o parametro id http://example.com/?id=1%3BDELETE+FROM+users. Isso vai setar o valor de $_GET[‘id’] para 1; DELETE FROM users e todos os usuários serão deletados e você provavelmente será demitido 🙁 . Mas para garantir que isso não aconteça você deverá sanitizar as variáveis usando funções PDO para isso.

Com o método bindParam podemos passa securamente nossas variáveis.

Essa é a maneira correta de passar variáveis para nossas consultas com PDO, sim, usando o método bindParam. Repare que no método prepare() na linha 6 do nosso código nós passamos apenas um bind ‘:id’ para nossa consulta SQL. Depois disso tomamos o cuidado de filtrar o id que vem da url usando o método filter_input [leia mais].

Conclusão

O PDO é uma mão na roda quando se trata de abstração os tipos de bancos de dados. Isso é importante porquê no início do projeto você pode usar um banco de dados MySQL e depois de um tempo, caso o requisito do projeto seja alterado, o seu time precisará mudar para um SQLite da vida.

Entender essas mudanças de projetos e principalmente se preparar para elas é fundamental em desenvolvimento de software, seja PHP, Javascript, NodeJS ou outrem.

Para mais informações sobre PDO sugiro que você acesse o site PHP The Right Way.

Julio Alves
administrator
Julio Alves é desenvolvedor web com mais de 8 anos de experiência, amante de PHP, Javascript, NodeJS, Ionic e ReactNative. Graduado em Sistemas de Informação pela Faculdade Estácio FIC do Ceará. Acredita que para se tornar um bom programador é preciso sobretudo ser esforçado e aberto para aprender todos os dias.

Comments

  • Arthur
    28/12/2019

    Muito obrigado pela explicação!

  • Matheus Martins
    06/08/2021

    Estava estudando PHP e me deparei com esse raio de PDO e resolvi pesquisar… A imagem foi bem sugestiva na pesquisa do Google, quando terminei a leitura então… Meu Deus, que esclarecimento. Entendi tudinho. Muito obrigado!

  • Juelson
    18/11/2021

    Obrigado amigo, você é um amigo!

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Lançamento Novo Curso de PHP 7
Lançamento Novo Curso de PHP 7