Vou criar um exemplo completo de um CRUD (Create, Read, Update, Delete) usando PHP 8.3, PDO e MySQL. Esse CRUD será para uma tabela simples de usuários no banco de dados.
1. Estrutura do Banco de Dados
Suponhamos que você tenha uma tabela usuarios com a seguinte estrutura:
CREATE TABLE usuarios (
id INT AUTO_INCREMENT PRIMARY KEY,
nome VARCHAR(100) NOT NULL,
email VARCHAR(100) NOT NULL UNIQUE,
idade INT NOT NULL
);
2. Código PHP para o CRUD
a) Configuração da Conexão PDO
<?php
// Configuração do banco de dados
$host = 'localhost';
$dbname = 'meubanco';
$username = 'root';
$password = 'senha123';
try {
$pdo = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
die("Erro de conexão: " . $e->getMessage());
}
?>
b) Create (Criar Novo Usuário)
Este arquivo vai permitir inserir um novo usuário na tabela usuarios.
<?php
include 'conexao.php';
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$nome = $_POST['nome'];
$email = $_POST['email'];
$idade = $_POST['idade'];
try {
$sql = "INSERT INTO usuarios (nome, email, idade) VALUES (:nome, :email, :idade)";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':nome', $nome);
$stmt->bindParam(':email', $email);
$stmt->bindParam(':idade', $idade);
$stmt->execute();
echo "Usuário criado com sucesso!";
} catch (PDOException $e) {
echo "Erro ao criar usuário: " . $e->getMessage();
}
}
?>
<form method="POST">
Nome: <input type="text" name="nome" required><br>
Email: <input type="email" name="email" required><br>
Idade: <input type="number" name="idade" required><br>
<input type="submit" value="Criar Usuário">
</form>
c) Read (Listar Usuários)
Este arquivo vai listar todos os usuários da tabela usuarios.
<?php
include 'conexao.php';
try {
$sql = "SELECT * FROM usuarios";
$stmt = $pdo->query($sql);
$usuarios = $stmt->fetchAll(PDO::FETCH_ASSOC);
if (count($usuarios) > 0) {
foreach ($usuarios as $usuario) {
echo "ID: " . $usuario['id'] . " | Nome: " . $usuario['nome'] . " | Email: " . $usuario['email'] . " | Idade: " . $usuario['idade'] . "<br>";
echo "<a href='update.php?id=" . $usuario['id'] . "'>Editar</a> | <a href='delete.php?id=" . $usuario['id'] . "'>Excluir</a><br><br>";
}
} else {
echo "Nenhum usuário encontrado.";
}
} catch (PDOException $e) {
echo "Erro ao listar usuários: " . $e->getMessage();
}
?>
d) Update (Atualizar Usuário)
Este arquivo permitirá editar os dados de um usuário já existente.
<?php
include 'conexao.php';
if (isset($_GET['id'])) {
$id = $_GET['id'];
// Buscar o usuário a ser editado
try {
$sql = "SELECT * FROM usuarios WHERE id = :id";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':id', $id);
$stmt->execute();
$usuario = $stmt->fetch(PDO::FETCH_ASSOC);
if (!$usuario) {
echo "Usuário não encontrado.";
exit;
}
} catch (PDOException $e) {
echo "Erro ao buscar usuário: " . $e->getMessage();
exit;
}
}
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$nome = $_POST['nome'];
$email = $_POST['email'];
$idade = $_POST['idade'];
try {
$sql = "UPDATE usuarios SET nome = :nome, email = :email, idade = :idade WHERE id = :id";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':nome', $nome);
$stmt->bindParam(':email', $email);
$stmt->bindParam(':idade', $idade);
$stmt->bindParam(':id', $id);
$stmt->execute();
echo "Usuário atualizado com sucesso!";
} catch (PDOException $e) {
echo "Erro ao atualizar usuário: " . $e->getMessage();
}
}
?>
<form method="POST">
Nome: <input type="text" name="nome" value="<?= $usuario['nome'] ?>" required><br>
Email: <input type="email" name="email" value="<?= $usuario['email'] ?>" required><br>
Idade: <input type="number" name="idade" value="<?= $usuario['idade'] ?>" required><br>
<input type="submit" value="Atualizar Usuário">
</form>
e) Delete (Excluir Usuário)
Este arquivo vai excluir um usuário da tabela usuarios.
<?php
include 'conexao.php';
if (isset($_GET['id'])) {
$id = $_GET['id'];
try {
// Excluir usuário
$sql = "DELETE FROM usuarios WHERE id = :id";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':id', $id);
$stmt->execute();
echo "Usuário excluído com sucesso!";
} catch (PDOException $e) {
echo "Erro ao excluir usuário: " . $e->getMessage();
}
}
?>
3. Estrutura Completa de Arquivos
Aqui está a estrutura completa dos arquivos que você precisará:
- conexao.php – Arquivo responsável pela conexão ao banco de dados.
<?php
// Configuração do banco de dados
$host = 'localhost';
$dbname = 'meubanco';
$username = 'root';
$password = 'senha123';
try {
$pdo = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
die("Erro de conexão: " . $e->getMessage());
}
?>
1 - create.php – Formulário e lógica para criar um novo usuário.
2 - read.php – Exibe todos os usuários com links para editar ou excluir.
3 - update.php – Formulário e lógica para editar um usuário.
4 - delete.php – Lógica para excluir um usuário.
4. Conclusão
Agora você tem um sistema básico de CRUD em PHP usando PDO e MySQL. O código cobre as operações essenciais para criar, ler, atualizar e excluir usuários em um banco de dados.
Funcionalidades:
- Create: Permite adicionar novos usuários.
- Read: Lista todos os usuários com opções de editar ou excluir.
- Update: Permite editar os dados de um usuário existente.
- Delete: Permite excluir um usuário.
Este exemplo usa uma estrutura simples, mas você pode expandir facilmente para adicionar mais funcionalidades, como validação de dados, tratamento de erros mais robusto, e até mesmo uma interface mais amigável com o uso de Bootstrap ou outras bibliotecas de front-end.
Simples, rápido e eficiente, não é mesmo? 🚀
Atenciosamente,
Maykon Silveira