Como usar PDO para conectar o PHP ao MySQL?
O PDO (PHP Data Objects) é uma interface de acesso a bancos de dados que permite conectar o PHP a diferentes sistemas de gerenciamento de bancos de dados (SGBDs), incluindo MySQL, PostgreSQL e SQLite. Ele oferece maior flexibilidade e segurança em comparação ao MySQLi, especialmente ao prevenir SQL Injection.
Criando uma conexão com PDO
Podemos estabelecer uma conexão ao MySQL utilizando PDO da seguinte maneira:
<?php
try {
$conexao = new PDO("mysql:host=localhost;dbname=meu_banco", "usuario", "senha");
$conexao->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Conexão estabelecida com sucesso!";
} catch (PDOException $e) {
echo "Erro na conexão: " . $e->getMessage();
}
?>
Neste código:
- Definimos
host
,dbname
,usuario
esenha
. - Usamos
setAttribute()
para ativar o modo de erro EXCEPTION, melhorando a depuração. - O
try/catch
captura falhas de conexão e exibe mensagens de erro adequadas.
Executando consultas com PDO
Após estabelecer a conexão, podemos realizar operações no banco de dados:
Inserindo dados com Prepared Statements
<?php
try {
$conexao = new PDO("mysql:host=localhost;dbname=meu_banco", "usuario", "senha");
$conexao->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "INSERT INTO usuarios (nome, email) VALUES (:nome, :email)";
$stmt = $conexao->prepare($sql);
$stmt->bindParam(':nome', $nome);
$stmt->bindParam(':email', $email);
$nome = "Carlos Almeida";
$email = "carlos@email.com";
$stmt->execute();
echo "Usuário cadastrado com sucesso!";
} catch (PDOException $e) {
echo "Erro: " . $e->getMessage();
}
?>
Aqui, placeholders nomeados são utilizados para evitar SQL Injection.
Benefícios do uso de PDO
- Suporte a múltiplos bancos de dados (MySQL, PostgreSQL, SQLite, etc.).
- Prepared Statements para maior segurança.
- Tratamento de erros melhorado.
- Maior flexibilidade em aplicações de grande porte.
Por que utilizar PDO em vez de MySQLi no PHP?
O PDO é amplamente utilizado no PHP por sua segurança e compatibilidade com diferentes bancos de dados. Ao contrário do MySQLi, que é específico para MySQL, o PDO permite que o mesmo código funcione com diversos SGBDs sem necessidade de grandes alterações. Além disso, seu suporte nativo a prepared statements ajuda a evitar SQL Injection, tornando-o a melhor escolha para projetos profissionais.
Algumas aplicações:
- Criação de sistemas seguros contra SQL Injection
- Compatibilidade com múltiplos bancos de dados
- Melhor tratamento de erros e depuração
- Desenvolvimento de aplicações escaláveis e seguras
Dicas para quem está começando
- Prefira PDO se precisar de suporte para diferentes bancos de dados.
- Utilize sempre prepared statements para evitar SQL Injection.
- Ative
PDO::ERRMODE_EXCEPTION
para capturar erros de forma mais eficiente. - Feche a conexão após o uso para liberar recursos do servidor.
- Use
fetch(PDO::FETCH_ASSOC)
para recuperar dados como arrays associativos.
Contribuições de Daniel Moreira