Introdução ao PHP e MySQL
PHP e MySQL são duas das tecnologias mais populares para desenvolvimento web, open-source e amplamente usadas para criar sites dinâmicos.
PHP e MySQL são duas das tecnologias mais populares para desenvolvimento web e foram projetadas para trabalhar juntas. O PHP é executado no servidor e gera o HTML que os visitantes veem; o MySQL armazena os dados que essas páginas precisam — usuários, posts, pedidos, comentários. Quase todo site dinâmico que você usa (um blog, um fórum, uma loja online) é construído com essa combinação ou algo muito parecido.
Esta página explica o que cada tecnologia faz, as duas formas de o PHP se comunicar com o MySQL, e um fluxo de trabalho completo e funcional: conectar, criar uma tabela, inserir dados e lê-los de volta. Ao final, você saberá quais ferramentas utilizar e onde encontrar mais informações sobre cada operação.
O que é PHP?
PHP significa PHP: Hypertext Preprocessor e é uma linguagem de script do lado do servidor. "Lado do servidor" significa que o código é executado no servidor web antes de qualquer coisa ser enviada ao navegador — o visitante nunca vê o PHP, apenas o HTML que ele produz. Como o PHP pode ler entradas do usuário, comunicar-se com um banco de dados e criar uma página diferente a cada requisição, ele é usado em sites de e-commerce, fóruns, blogs e qualquer aplicação que muda com base em dados.
O que é MySQL?
MySQL é um sistema de gerenciamento de banco de dados relacional (SGBDR). "Relacional" significa que os dados vivem em tabelas compostas de linhas e colunas — uma tabela users, uma tabela products — e as tabelas podem se referenciar mutuamente. O PHP envia comandos ao MySQL usando SQL (Structured Query Language), a linguagem padrão para solicitar ao banco de dados que armazene ou retorne dados. O MySQL mantém os dados em disco entre as requisições, então informações inseridas hoje ainda estarão lá na próxima semana.
Por que usar PHP e MySQL juntos?
- Gratuito e open-source. Ambos são gratuitos para usar e distribuir, então você pode criar e hospedar uma aplicação completa sem custo de licença.
- Escalável. A mesma stack roda um blog pessoal ou um site de alto tráfego — você adiciona recursos conforme os dados e o tráfego crescem.
- Fácil de aprender e bem documentado. O PHP tem uma curva de aprendizado suave, o MySQL está em todo lugar, e a grande comunidade significa que a maioria dos problemas que você encontrar já está respondida online.
- Amplamente suportado. Quase todo provedor de hospedagem oferece PHP e MySQL por padrão, e grandes empresas dependem dessa combinação em produção.
Duas formas de conectar: MySQLi vs. PDO
O PHP vem com duas extensões modernas para banco de dados. Você deve escolher uma e mantê-la em um projeto:
| MySQLi | PDO | |
|---|---|---|
| Funciona com | Apenas MySQL | 12+ bancos de dados (MySQL, PostgreSQL, SQLite…) |
| Estilos de API | Procedural e orientado a objetos | Apenas orientado a objetos |
| Prepared statements | Sim | Sim |
| Melhor quando | Você tem certeza de que usará apenas MySQL | Pode precisar trocar de banco de dados no futuro |
Evite as antigas funções
mysql_*que você pode encontrar em tutoriais antigos. Elas foram removidas no PHP 7 e são inseguras. Use MySQLi ou PDO.
Ambas as extensões suportam prepared statements, que é o recurso de segurança mais importante aqui — eles impedem ataques de injeção SQL. Veja MySQL Prepared Statements para a explicação completa.
Conectando a um banco de dados MySQL
Uma conexão precisa de quatro informações: o host, um nome de usuário, uma senha e o nome do banco de dados. O exemplo abaixo usa o estilo procedural do MySQLi e verifica erros antes de continuar.
<?php
$host = 'localhost';
$user = 'username';
$password = 'password';
$dbname = 'database_name';
// Create connection
$conn = mysqli_connect($host, $user, $password, $dbname);
// Always check the connection before doing anything else
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
echo "Connected successfully";
?>Para o estilo orientado a objetos do MySQLi, um exemplo completo com PDO e solução de problemas de conexão, veja Conectando PHP ao MySQL e PHP MySQLi.
O fluxo de trabalho típico
Uma vez conectado, quase tudo que você faz com um banco de dados é uma das quatro operações, frequentemente chamadas de CRUD — Create, Read, Update, Delete (Criar, Ler, Atualizar, Excluir). Cada uma mapeia para uma instrução SQL e tem seu próprio capítulo:
- Criar uma tabela para definir onde os dados ficam — veja Criar uma Tabela MySQL.
- Inserir linhas de dados — veja Inserir Dados no MySQL.
- Ler (select) os dados de volta — veja Selecionar Dados do MySQL.
- Atualizar linhas existentes — veja Atualizar Dados no MySQL.
- Excluir linhas que você não precisa mais — veja Excluir Dados no MySQL.
Geralmente você filtra resultados com uma cláusula WHERE e os ordena com ORDER BY.
Um exemplo completo e resumido
Este script conecta, cria uma tabela users se ela não existir, insere uma linha e depois lê tudo de volta. Ele usa um prepared statement para a inserção, de modo que valores fornecidos pelo usuário não possam comprometer a consulta.
<?php
$conn = mysqli_connect('localhost', 'username', 'password', 'database_name');
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
// 1. Create a table
mysqli_query($conn, "
CREATE TABLE IF NOT EXISTS users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50),
email VARCHAR(100)
)
");
// 2. Insert a row safely with a prepared statement
$stmt = mysqli_prepare($conn, "INSERT INTO users (name, email) VALUES (?, ?)");
mysqli_stmt_bind_param($stmt, "ss", $name, $email);
$name = "Ada Lovelace";
$email = "[email protected]";
mysqli_stmt_execute($stmt);
// 3. Read the data back
$result = mysqli_query($conn, "SELECT id, name, email FROM users");
while ($row = mysqli_fetch_assoc($result)) {
echo $row['id'] . ": " . $row['name'] . " (" . $row['email'] . ")\n";
}
mysqli_close($conn);
?>O argumento "ss" informa ao MySQL que ambos os valores vinculados são strings. Como os valores são vinculados separadamente do texto SQL, um atacante não pode injetar SQL malicioso através do campo name ou email.
Armadilhas comuns
- Esquecer de verificar a conexão. Se as credenciais ou o host estiverem errados, todas as chamadas seguintes falharão silenciosamente. Sempre use
die()ou trate o erro logo após conectar. - Construir consultas com concatenação de strings. Colocar entradas do usuário diretamente em uma string SQL abre caminho para injeção SQL. Use prepared statements em vez disso.
- Deixar erros de banco de dados visíveis aos usuários. Em produção, registre os erros em logs em vez de imprimir
mysqli_connect_error()na página — isso pode vazar detalhes do servidor.
Conclusão
PHP e MySQL permitem que você crie sites dinâmicos e orientados a dados com ferramentas gratuitas e bem suportadas. Conecte-se com MySQLi ou PDO, sempre use prepared statements para entradas do usuário, e lembre-se de que quase toda tarefa de banco de dados é apenas uma das quatro operações CRUD. A partir daqui, siga os links de fluxo de trabalho acima para aprender cada operação em profundidade.