Seja muito bem-vindo à Academy Code Christ!
🌍 Academy Code Christ está disponível em vários idiomas.Fique à vontade para usar o tradutor na Barra lateral (Sidebar) e aprender no seu idioma.
PHP 🐘 Etapa 10
Banco de Dados (MySQL e PDO)
🎯 Por Que Usar Banco de Dados
Até agora, todos os dados foram guardados apenas na memória (arrays, sessões, variáveis).
Mas quando o servidor é reiniciado ou o
usuário sai, tudo se perde.
É aí que o banco de dados entra:
um grande repositório que guarda as
informações de forma organizada e permanente, permitindo operações como:
● Armazenar cadastros de usuários e produtos;
● Gerar relatórios;
● Buscar informações rápidas e filtradas;
● Atualizar ou remover dados.
O PHP trabalha muito bem com bancos como MySQL, MariaDB, PostgreSQL, SQLite, entre outros.
O mais comum e tradicional é o MySQL,
usado amplamente em aplicações web.
Conceitos Básicos do MySQL
Antes de conectar, é importante entender a estrutura de um banco de dados.
● Banco de dados: o conjunto completo (ex: loja, escola, sistema).
● Tabela: uma coleção de registros semelhantes (ex: clientes, produtos).
● Colunas (campos): atributos de cada registro (ex: nome, email, idade).
● Linhas (registros): itens individuais (cada cliente ou produto).
Exemplo de tabela usuarios:
|
id |
nome |
|
senha |
|
1 |
Ana |
... |
|
|
2 |
Paulo |
... |
Criando um Banco de Dados e Tabela
Acesse o phpMyAdmin (geralmente em localhost/phpmyadmin), e crie o banco:
CREATE DATABASE sistema;
USE sistema;
CREATE TABLE usuarios (
id INT AUTO_INCREMENT PRIMARY KEY,
nome VARCHAR(100),
email VARCHAR(150),
senha VARCHAR(255)
);
Pronto! Temos nossa base para começar.
Conectando o PHP ao MySQL usando PDO
O PDO (PHP Data Objects) é uma biblioteca que permite conexão segura e padronizada com o banco.
É mais moderna que mysqli e facilita o
uso com diferentes bancos no futuro.
<?php
$servidor = "localhost";
$banco = "sistema";
$usuario = "root";
$senha = "";
try {
$conexao = new PDO("mysql:host=$servidor;dbname=$banco;charset=utf8", $usuario, $senha);
$conexao->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Conexão bem-sucedida!";
} catch (PDOException $erro) {
echo "Erro: " . $erro->getMessage();
}
?>
Se tudo deu certo, o navegador deverá exibir “Conexão bem-sucedida!”.
Inserindo Dados no Banco
Criaremos uma página com formulário para registrar usuários.
form.html
<form method="POST" action="inserir.php">
Nome: <input type="text" name="nome"><br>
Email: <input type="email" name="email"><br>
Senha: <input type="password" name="senha"><br>
<input type="submit" value="Cadastrar">
</form>
inserir.php
<?php
include("conexao.php"); // arquivo contendo o código PDO anterior
$nome = $_POST["nome"];
$email = $_POST["email"];
$senha = password_hash($_POST["senha"], PASSWORD_DEFAULT); // Criptografia
$sql = "INSERT INTO usuarios (nome, email, senha) VALUES (:nome, :email, :senha)";
$stmt = $conexao->prepare($sql);
$stmt->bindParam(":nome", $nome);
$stmt->bindParam(":email", $email);
$stmt->bindParam(":senha", $senha);
$stmt->execute();
echo "Usuário cadastrado com sucesso!";
?>
🔒 Observe o uso de password_hash() e prepared statements — isso protege contra injeção de SQL, que é um dos ataques mais comuns em formulários.
Consultando Dados do Banco
Vamos exibir os usuários cadastrados.
listar.php
<?php
include("conexao.php");
$sql = "SELECT * FROM usuarios ORDER BY id DESC";
$stmt = $conexao->prepare($sql);
$stmt->execute();
$usuarios = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($usuarios as $u) {
echo "ID: {$u['id']} - Nome: {$u['nome']} - Email: {$u['email']}<br>";
}
?>
Saída:
ID: 3 - Nome: João - Email: [email protected]
ID: 2 - Nome: Ana - Email: [email protected]
Os resultados vêm como um array associativo, facilitando manipulação e exibição.
Buscas com Filtros Dinâmicos
Suponha que o usuário queira procurar por nome:
<?php
include("conexao.php");
$busca = "%".$_GET["nome"]."%";
$sql = "SELECT * FROM usuarios WHERE nome LIKE :busca";
$stmt = $conexao->prepare($sql);
$stmt->bindParam(":busca", $busca);
$stmt->execute();
$resultados = $stmt->fetchAll(PDO::FETCH_ASSOC);
if ($resultados) {
foreach ($resultados as $linha) {
echo $linha["nome"] . " - " . $linha["email"] . "<br>";
}
} else {
echo "Nenhum usuário encontrado.";
}
?>
Com o operador SQL LIKE, você cria buscas semelhantes ao comportamento de filtros de sistemas reais.
Atualizando Registros
Para editar dados, basta usar o comando UPDATE.
<?php
include("conexao.php");
$id = 2;
$novoNome = "Carla Souza";
$sql = "UPDATE usuarios SET nome = :nome WHERE id = :id";
$stmt = $conexao->prepare($sql);
$stmt->bindParam(":nome", $novoNome);
$stmt->bindParam(":id", $id);
$stmt->execute();
echo "Registro atualizado com sucesso!";
?>
O uso de parâmetros nomeados (:nome, :id) evita erros e aumenta a segurança.
Excluindo Registros
Para apagar um registro:
<?php
include("conexao.php");
$id = $_GET["id"];
$sql = "DELETE FROM usuarios WHERE id = :id";
$stmt = $conexao->prepare($sql);
$stmt->bindParam(":id", $id);
$stmt->execute();
echo "Usuário removido!";
?>
⚠️ Nunca exclua dados diretamente sem segurança adicional — confirme a ação e proteja contra acessos indevidos.
Ligando Tudo — CRUD Completo
CRUD = Create, Read, Update, Delete
Toda aplicação de cadastro segue
esse padrão.
O fluxo ideal:
1. form.html → cria novos registros (Create);
2. listar.php → lê e exibe todos (Read);
3. editar.php → edita registros (Update);
4. excluir.php → remove registros (Delete).
Essas quatro operações formam a base de qualquer sistema de administração (painel, loja, CMS etc.).
Exemplo Resumido — Sistema de Cadastro
1️⃣ conexão.php
<?php
$servidor = "localhost";
$banco = "sistema";
$usuario = "root";
$senha = "";
try {
$pdo = new PDO("mysql:host=$servidor;dbname=$banco;charset=utf8", $usuario, $senha);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
echo "Erro: " . $e->getMessage();
}
?>
2️⃣ inserir.php
include("conexao.php");
$nome = $_POST["nome"];
$email = $_POST["email"];
$senha = password_hash($_POST["senha"], PASSWORD_DEFAULT);
$stmt = $pdo->prepare("INSERT INTO usuarios (nome,email,senha) VALUES (?,?,?)");
$stmt->execute([$nome,$email,$senha]);
header("Location: listar.php");
3️⃣ listar.php
include("conexao.php");
$dados = $pdo->query("SELECT * FROM usuarios")->fetchAll(PDO::FETCH_ASSOC);
foreach ($dados as $u) {
echo "{$u['nome']} - {$u['email']} | <a href='excluir.php?id={$u['id']}'>Excluir</a><br>";
}
4️⃣ excluir.php
include("conexao.php");
$id = $_GET["id"];
$stmt = $pdo->prepare("DELETE FROM usuarios WHERE id=?");
$stmt->execute([$id]);
header("Location: listar.php");
➡️ Em poucos arquivos você tem um sistema funcional de cadastro completo.
Lidando com Erros de Banco
Use try...catch para capturar exceções:
try {
$stmt->execute();
} catch (PDOException $e) {
echo "Erro ao executar: " . $e->getMessage();
}
Isso permite que o sistema falhe de forma controlada e informativa.
Padrão MVC (Model-View-Controller)
Conforme o sistema cresce, misturar HTML e SQL no mesmo
arquivo torna tudo confuso.
Por isso, separa-se o código em três
camadas principais:
● Model: lida com o banco de dados (funções PDO);
● View: exibe o conteúdo (HTML, formulários, tabelas);
● Controller: recebe ações do usuário e decide o que fazer.
Esse padrão é base para frameworks profissionais como Laravel e Symfony.
Segurança em Aplicações com Banco
Alguns pontos indispensáveis:
1.
Nunca concatenar variáveis diretamente em SQL.
Use prepare() e bindParam().
2. Criptografar senhas sempre com password_hash().
3. Validar entradas do usuário antes de salvar.
4. Limitar acessos: apenas usuários autenticados devem manipular registros.
5. Fazer backups regulares do banco de dados.
A segurança de dados é tão importante quanto a lógica em si.
Conclusão
Nesta etapa, você aprendeu:
● Os conceitos fundamentais de bancos de dados (tabelas, registros, campos);
● Como criar conexões seguras com o MySQL usando PDO;
● Inserir, listar, pesquisar, atualizar e excluir registros;
● Criar sistemas CRUD reais e funcionais;
● Utilizar tratamento de erros e boas práticas de segurança.
Agora, o PHP deixa de ser apenas uma linguagem de exibição e passa a ser a ponte completa entre o usuário e o armazenamento real de informações.
🚀 Próxima etapa – Trabalhando com
Arquitetura MVC e Organização Profissional do Código PHP
Na próxima etapa, você aprenderá a construir aplicações PHP de forma estruturada e escalável, separando lógica, apresentação e dados — exatamente como fazem os desenvolvedores profissionais.

%20-%20Copia.png)
.png)
.png)
.png)
Postar um comentário