Como excluir registros do MySQL usando PHP?
A remoção de registros do banco de dados é uma operação comum, mas requer cuidados para evitar a exclusão de dados de forma irreversível. Podemos excluir registros utilizando MySQLi e PDO.
Excluindo registros com MySQLi (Procedural)
Podemos utilizar MySQLi para deletar registros de forma procedural:
<?php
// Conectar ao banco de dados
$conexao = mysqli_connect("localhost", "usuario", "senha", "meu_banco");
if (!$conexao) {
die("Falha na conexão: " . mysqli_connect_error());
}
// Deletar um registro específico
$sql = "DELETE FROM usuarios WHERE id=1";
if (mysqli_query($conexao, $sql)) {
echo "Registro excluído com sucesso!";
} else {
echo "Erro ao excluir: " . mysqli_error($conexao);
}
// Fechar conexão
mysqli_close($conexao);
?>
Esse código remove o registro cujo id=1
.
Excluindo registros com MySQLi (Orientado a Objetos)
<?php
$conexao = new mysqli("localhost", "usuario", "senha", "meu_banco");
if ($conexao->connect_error) {
die("Erro na conexão: " . $conexao->connect_error);
}
$sql = "DELETE FROM usuarios WHERE id=2";
if ($conexao->query($sql) === TRUE) {
echo "Registro excluído com sucesso!";
} else {
echo "Erro ao excluir: " . $conexao->error;
}
$conexao->close();
?>
Aqui, utilizamos a sintaxe orientada a objetos para executar a consulta.
Excluindo registros com PDO (Mais Seguro)
O PDO permite consultas preparadas, prevenindo SQL Injection:
<?php
try {
$conexao = new PDO("mysql:host=localhost;dbname=meu_banco", "usuario", "senha");
$conexao->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// Query preparada para deletar um registro
$sql = "DELETE FROM usuarios WHERE id = :id";
$stmt = $conexao->prepare($sql);
// Definir o valor do parâmetro
$stmt->bindParam(':id', $id);
$id = 3;
$stmt->execute();
echo "Registro excluído com sucesso!";
} catch (PDOException $e) {
echo "Erro ao excluir: " . $e->getMessage();
}
?>
Aqui, utilizamos prepared statements para evitar SQL Injection.
Por que usar PDO para excluir registros do MySQL com PHP?
A exclusão de registros no MySQL via PHP deve ser realizada com cuidado para evitar remoções acidentais. O uso de cláusulas WHERE específicas e prepared statements ajuda a tornar essa operação mais segura. Em sistemas críticos, pode ser mais interessante marcar registros como inativos em vez de excluí-los definitivamente.
Algumas aplicações:
- Remoção de usuários inativos em sistemas de cadastro
- Exclusão de produtos obsoletos em lojas virtuais
- Gerenciamento de registros em sistemas administrativos
- Eliminação de comentários ou postagens indesejadas em fóruns
Dicas para quem está começando
- Sempre utilize prepared statements para evitar SQL Injection.
- Evite usar
DELETE
sem umWHERE
, pois isso excluirá todos os registros. - Faça backup do banco antes de executar operações de exclusão.
- Em vez de excluir registros, considere marcar como inativos.
- Use
LIMIT
para restringir a exclusão a um número específico de registros.
Contribuições de Daniel Moreira