Saudações, futuro(a) aprovado(a)! Professor Gunter Amorim aqui.
Neste artigo, vamos explorar duas ferramentas essenciais para interação com bancos de dados no PHP: PDO (PHP Data Objects) e MySQLi (MySQL Improved). Ambas as extensões têm suas particularidades e benefícios, mas como escolher entre elas? Vamos descobrir juntos!
O que é PDO?
PDO (PHP Data Objects) é uma extensão genérica que fornece uma interface consistente para trabalhar com diferentes bancos de dados em PHP. Com o PDO, você pode conectar-se a mais de 12 tipos de bancos de dados, como MySQL, PostgreSQL, SQLite, Oracle, entre outros. Essa flexibilidade é ideal para aplicações que precisam de portabilidade entre diferentes plataformas de banco de dados.
Principais Características do PDO:
- Suporte a vários bancos de dados.
- Prepared statements (declarações preparadas) que aumentam a segurança contra ataques de SQL Injection.
- Interface uniforme, o que significa que o código é facilmente adaptável para outro banco de dados.
Exemplo de Conexão com PDO:
try {
$pdo = new PDO('mysql:host=localhost;dbname=exemplo', 'usuario', 'senha');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Conexão bem-sucedida!";
} catch (PDOException $e) {
echo "Erro: " . $e->getMessage();
}
O que é MySQLi?
MySQLi (“MySQL Improved”) é uma extensão específica para interagir com o banco de dados MySQL. Essa extensão melhora o desempenho e oferece suporte a recursos mais avançados introduzidos nas versões mais recentes do MySQL, como transações e stored procedures.
Principais Características do MySQLi:
- Suporte exclusivo ao MySQL.
- Prepared statements para prevenção de SQL Injection.
- Suporte a orientação a objetos e funções procedurais.
- Melhor desempenho em aplicações focadas no MySQL.
Exemplo de Conexão com MySQLi:
$mysqli = new mysqli("localhost", "usuario", "senha", "exemplo");
if ($mysqli->connect_error) {
die("Erro de conexão: " . $mysqli->connect_error);
}
echo "Conexão bem-sucedida!";
Comparativo: PDO vs MySQLi
Característica | PDO | MySQLi |
Compatibilidade | Múltiplos bancos de dados | Apenas MySQL |
Orientação a Objetos | Totalmente orientado a objetos | Objetos e Procedural |
Segurança (SQL Injection) | Suporte a prepared statements | Suporte a prepared statements |
Facilidade de Portabilidade | Alta | Baixa |
Performance | Similar (para MySQL) | Otimizada para MySQL |
Suporte a Recursos Específicos | Menor foco em MySQL | Suporte exclusivo ao MySQL |
Quando Usar Cada Um?

Escolha PDO se:
- Você planeja ou tem a possibilidade de mudar o banco de dados no futuro.
- Deseja um código mais genérico e flexível para diferentes plataformas.
- Precisa trabalhar com diversos bancos de dados na mesma aplicação.
Escolha MySQLi se:
- Sua aplicação utiliza exclusivamente MySQL.
- Você busca o máximo de desempenho e quer aproveitar recursos específicos do MySQL.
- Prefere a opção de usar estilo procedural ou orientado a objetos.
E como fica nas questões de concurso, Gunter? Bora ver!
1. (IV-UFG/ANALISTA/TJ-AC/2024)
Ao utilizar o PHP Data Objects (PDO) para interação com um banco de dados MySQL, qual prática é recomendada para prevenir SQL Injection?
- Utilização de prepared statements com placeholders para parâmetros.
- Uso de variáveis globais PHP dentro de consultas SQL.
- Concatenação direta de variáveis na string de consulta SQL.
- Execução direta de consultas SQL recebidas através de entradas do usuário.
COMENTÁRIO
A alternativa correta é a letra A. A utilização de prepared statements com placeholders para parâmetros é a prática recomendada para prevenir SQL Injection. Essa abordagem garante que os valores fornecidos pelo usuário sejam tratados como dados e não como comandos SQL. Isso ocorre porque o PDO utiliza a separação entre a consulta e os valores, prevenindo a execução de comandos maliciosos injetados nas entradas do usuário. É uma solução eficiente e amplamente utilizada para aumentar a segurança de aplicações que interagem com bancos de dados.
2. (PR4 (UFRJ)/ANALISTA/UFRJ/2014)
Para acessar dados em um banco de dados MySQL, devemos abrir uma conexão com o servidor MySQL. Em PHP 5.5, isso pode ser feito com a função:
- mysql_connection ()
- dbconnect ()
- mysqli_connect ()
- db.connect ()
- mysqli_dbconnect()
COMENTÁRIO
A alternativa correta é a letra C. A função mysqli_connect() é usada para estabelecer uma conexão com um banco de dados MySQL no PHP. Introduzida como parte da extensão MySQLi, ela substitui a função obsoleta mysql_connect() a partir do PHP 5.5, oferecendo suporte a recursos mais modernos, como prepared statements e conexões seguras. Essa função aceita parâmetros como host, nome de usuário, senha e nome do banco de dados para configurar a conexão com o servidor MySQL.
3. (INSTITUTO VERBENA/ANALISTA/TC AC/2024)
Ao utilizar o PHP Data Objects (PDO) para interação com um banco de dados MySQL, qual prática é recomendada para prevenir SQL Injection?
- Utilização de prepared statements com placeholders para parâmetros.
- Uso de variáveis globais PHP dentro de consultas SQL.
- Concatenação direta de variáveis na string de consulta SQL.
- Execução direta de consultas SQL recebidas através de entradas do usuário.
COMENTÁRIO
A alternativa correta é a letra A. A utilização de prepared statements com placeholders para parâmetros é a prática mais recomendada para prevenir SQL Injection ao usar PHP Data Objects (PDO). Prepared statements permitem separar a lógica SQL dos dados fornecidos pelo usuário, garantindo que esses dados sejam tratados como valores e não como comandos SQL. Essa abordagem elimina a possibilidade de injeção de comandos maliciosos na consulta, fortalecendo a segurança da aplicação.
Conclusão
Tanto PDO quanto MySQLi oferecem recursos modernos e seguros para trabalhar com bancos de dados em PHP. Sua escolha deve ser baseada nas necessidades específicas do projeto, como portabilidade, desempenho e preferências pessoais. O importante é garantir que o código seja seguro, organizado e fácil de manter. Agora que você conhece as diferenças entre PDO e MySQLi, pode escolher a melhor ferramenta para sua próxima aplicação. Sucesso no código!
Abraços e até a próxima jornada!
Quer ficar por dentro dos concursos públicos abertos e previstos pelo Brasil? Clique nos links abaixo:
Receba gratuitamente no seu celular as principais notícias do mundo dos concursos. Clique no link abaixo e inscreva-se:
Participe da conversa