Usando PDO para conexão com banco de dados
Olá pessoas,
O acesso a um banco de dados (na verdade acesso a um SGBD, sistema de gerenciamento de banco de dados) é algo muito comum na área de desenvolvimento. E existem os mais variados SGBD por aí: Mysql, Postgres, SQL Server…
Por este motivo que foi implementado a biblioteca PDO no PHP.
Ela facilita a conexão aos mais diversos tipos de SGBD. Alguns exemplos são:
- CUBRID (PDO)
- MS SQL Server (PDO)
- Firebird (PDO)
- IBM (PDO)
- Informix (PDO)
- MySQL (PDO)
- MS SQL Server (PDO)
- Oracle (PDO)
- ODBC and DB2 (PDO)
- PostgreSQL (PDO)
- SQLite (PDO)
- 4D (PDO)
A PDO (PHP Data Objects) é uma biblioteca de abstração de conexão à banco de dados. Ele auxilia na conexão e não na abstração de SQL. Alguns comandos SQL possuem sintaxe diferente dependendo do SGBD usado. Por exemplo:
Um comando para selecionar todos os usuários limitando a lista aos 10 primeiros:
|
|
No Mysql
|
|
No Oracle
Então para este tipo de abstração, você deve utilizar outra biblioteca, como a Doctrine Database Abstraction Layer.
Ok, com estas explicações, vamos a PDO.
É necessário ter a PDO instalada no seu sistema. Para tanto rode o comando a seguir (caso esteja em uma distribuição Linux baseada no Debian, caso contrário, dê uma olhada na documentação da PDO sobre como instalar em outros sistemas):
|
|
Neste caso estou usando a PDO para o mysql, para outros é só procurar pelos pacotes disponíveis no repositório: apt-cache search php-pdo
.
Com o pacote instalado, criaremos um banco de dados, uma tabela e alguns dados para teste:
|
|
Criado o banco de dados, vamos para o PHP.
|
|
No começo do arquivo nós criamos algumas variáveis com os dados de acesso ao banco de dados.
Logo depois criamos o dsn (Data Source Name), que contém os dados necessários para conexão com o banco, como:
- Qual SGBD será usado, nesse caso mysql
- O host onde o banco de dados está
- O nome do banco de dados para acesso
Então instanciamos a classe PDO com o dsn, usuário e senha do banco. Fizemos a configuração do Mysql demonstrando que vamos usar caracteres em UTF-8.
A partir daqui a variavel $pdo, conterá o objeto da PDO que provê vários métodos. Usamos o método query()
para executar uma query SQL qualquer.
O poder da PDO vai além disso, com métodos como prepare()
no qual podemos “preparar” uma SQL antes de enviá-la para o banco, filtrando os dados e evitando SQL Injection, mas isso ficará para um próximo post.