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é?!
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.
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.
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.
Comments