Configurando uma conexão com MySQL utilizando PDO no PHP

pdo-mysqlA seguir vou demonstrar como configurar uma conexão com uma base de dados no MySQL, no artigo que postei anteriormente demonstrei uma conexão com PDO mas com enfase na construção de uma classe seguindo o padrão de projeto singleton. Hoje o foco será sobre os parâmetros necessários para configurar uma conexão usando PDO.
 
Primeiro vamos a uma definição básica sobre PDO, o PHP Data Objects (popularmente conhecido como PDO) é uma biblioteca que tem como objetivo interfacear a comunicação entre o PHP e diversos banco de dados existentes atualmente. Na prática cada banco de dados possui um driver especifico onde são definidos suas principais características e disponibilidade de recursos, esses drivers são implementados pelas interfaces do PDO. 
 
Dessa maneira podemos consumir recursos de diversos bancos de dados através das implementações padrões do PDO, mas na verdade quem trabalha por baixo dos panos são os drivers específicos e tudo isso é transparente para nós programadores. Esse artigo contém somente algumas configurações, mas a biblioteca PDO possui uma variedade de atributos e funções para mais informações acessem o manual do  PDO.
 
Para esse artigo vamos trabalhar com o seguinte cenário:
– MySQL: 5.5.34
– PHP: 5.5
– Banco de Dados: DB_BLOG
 
Abaixo segue um script PHP bem simples de conexão, geralmente uso a classe de conexão que mencionei acima, nesse exemplo estou passando os parâmetros de conexão a partir de constantes que foram definidas no início do script (HOST, DBNAME, CHARSET, USER e PASSWORD), acho essa prática interessante além de deixar o código mais legível (na minha opinião). Depois de instanciar um obejto PDO o script manda imprimir o conteúdo da variável $pdo.

Vamos as explicações:

Esse código foi bloqueado com um bloco try..catch.. para exibir mensagens disparadas pelo objeto PDOExceptions que possam surgir durante o processo de configuração da conexão com o banco de dados MySQL.
1 – Defino as constantes com os parâmetros de conexão, até ai nenhuma novidade, único detalhe é a constante CHARSET contendo o valor ‘utf8’, essa prática economiza muita .. mas muita dor de cabeça mesmo, uma vez que atualmente a grande maioria dos bancos de dados construídos no MySQL utilizam como padrão esse charset, podemos ter resultados inesperados aos exibir dados no navegador se esse parâmetro não for passado.

 
 
2 – Esse array $opcoes pode conter várias definições que por ventura o programador julgue necessárias para configurar sua conexão, isso porque o PDO aceita que esse array de opções seja passado já no momento da conexão, nesse caso estou setando o CHARSET para essa conexão.

 
3 – Após serem informados os parâmetros é instanciado um objeto PDO, nesse momento ocorre a conexão de fato com o banco de dados, esses parâmetros contém praticamente todos os dados definidos nas constantes e também o array $opcoes, com exceção da primeiro ‘mysql’ que informa que tipo de SGBD está sendo solicitado uma conexão.

Dica: Opcionalmente pode ser criar uma string com os primeiros parâmetros (SGBD:host:dbname:charset) a própria documentação do PDO a chama de DSN.

 
4 -Aqui está sendo setado alguns atributos para o objeto PDO para essa conexão, basicamente estamos informando que quando houver um erro interno nas instruções do PDO, ou seja,  quando for disparada uma PDOException a mesma fique disponível para exibição. Senão for setado esses atributos, podem ocorrer erros mas não será possível captura-los com um bloco try …catch….

Dica: Deixei comentada essa linha porque a exibição de mensagens de Exception é interessante quando estamos em fase de desenvolvimento e precisamos corrigir os erros que estão ocorrendo, mas não é aconselhável deixar essas mensagens habilitadas em ambiente de produção, uma vez que podem exibir certas vulnerabilidades do código. A documentação oficial do PDO possui uma listagem contendo vários outros atributos aceitos.

 
5 – Por último o comando var_dump() exibe informações sobre o conteúdo da variável PDO no navegador. 

 
Resultado no Navegador:

 
 
 
 
 
 
 
Para efeito de teste vou forçar um erro e disparar uma PDOException, alterando a constante define(‘DBNAME’, ‘DB_BLOG’) para define(‘DBNAME’, ‘DB_BLO’), ou seja, intencionalmente vou passar o parâmetro com o nome do banco de dados errado, como já era de se esperar a mensagem informa que o banco de dados é desconhecido, observem a mensagem de erro no navegador:

 

 

Post relacionado:  Exibir erros no PHP durante o desenvolvimento | Dica

 

 

Bom pessoal neste artigo demonstrei como configurar uma conexão com banco de dados no MySQL, existem outras configurações que podem ser feitas, varia de acordo com a necessidade, lembrando que o PDO pode ser usado com outros SGBDs, principalmente PostgreSQL.

 
Até a próxima ….
Tags:,
Show Buttons
Hide Buttons