Sebelumnya kita sudah belajar cara menampilkan data, menambah data, mengubah data dan sekarang hapus data di PHP dan MySQL. Dalam aplikasi web, fitur hapus data sangat penting untuk mengelola informasi dengan baik. Contohnya:
-
Menghapus data pengguna yang sudah tidak aktif
-
Menghapus produk dari toko online
-
Menghapus artikel dari sistem manajemen konten
Namun, fitur ini juga harus dibuat hati-hati agar tidak menghapus data yang salah atau membuka celah keamanan. Di artikel ini, kamu akan belajar dua versi implementasi:
-
MySQLi (prosedural)
-
PDO (PHP Data Objects)
Persiapan Database
Pastikan kamu sudah memiliki tabel users
seperti pada seri sebelumnya:
CREATE TABLE users ( id INT(11) AUTO_INCREMENT PRIMARY KEY, nama VARCHAR(100), email VARCHAR(100), alamat TEXT );
Struktur Folder
delete_data/ ├── config.php ├── index.php ├── delete.php
Penjelasan:
-
config.php
→ koneksi ke database -
index.php
→ menampilkan daftar data -
delete.php
→ proses penghapusan data
Versi 1: Menghapus Data Menggunakan MySQLi
File: config.php
<?php $koneksi = mysqli_connect("localhost", "root", "", "belajarphp"); if (!$koneksi) { die("Koneksi gagal: " . mysqli_connect_error()); } ?>
File: index.php
Menampilkan daftar data dari tabel users
dengan tombol “Hapus”.
<?php include 'config.php'; $result = mysqli_query($koneksi, "SELECT * FROM users"); ?> <!DOCTYPE html> <html lang="id"> <head> <meta charset="UTF-8"> <title>Daftar User</title> </head> <body> <h2>Daftar User</h2> <table border="1" cellpadding="10"> <tr> <th>ID</th> <th>Nama</th> <th>Email</th> <th>Alamat</th> <th>Aksi</th> </tr> <?php while ($row = mysqli_fetch_assoc($result)) : ?> <tr> <td><?= $row['id']; ?></td> <td><?= $row['nama']; ?></td> <td><?= $row['email']; ?></td> <td><?= $row['alamat']; ?></td> <td> <a href="delete.php?id=<?= $row['id']; ?>" onclick="return confirm('Yakin ingin menghapus data ini?')">Hapus</a> </td> </tr> <?php endwhile; ?> </table> </body> </html>
File: delete.php
<?php include 'config.php'; if (isset($_GET['id'])) { $id = $_GET['id']; $query = mysqli_query($koneksi, "DELETE FROM users WHERE id='$id'"); if ($query) { echo "Data berhasil dihapus! <a href='index.php'>Kembali</a>"; } else { echo "Gagal menghapus data: " . mysqli_error($koneksi); } } ?>
Versi 2: Menghapus Data Menggunakan PDO
File: config.php
<?php try { $pdo = new PDO("mysql:host=localhost;dbname=belajarphp", "root", ""); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch (PDOException $e) { die("Koneksi gagal: " . $e->getMessage()); } ?>
File: index.php
<?php include 'config.php'; $stmt = $pdo->query("SELECT * FROM users"); ?> <!DOCTYPE html> <html lang="id"> <head> <meta charset="UTF-8"> <title>Daftar User (PDO)</title> </head> <body> <h2>Daftar User</h2> <table border="1" cellpadding="10"> <tr> <th>ID</th> <th>Nama</th> <th>Email</th> <th>Alamat</th> <th>Aksi</th> </tr> <?php while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) : ?> <tr> <td><?= $row['id']; ?></td> <td><?= $row['nama']; ?></td> <td><?= $row['email']; ?></td> <td><?= $row['alamat']; ?></td> <td> <a href="delete.php?id=<?= $row['id']; ?>" onclick="return confirm('Yakin ingin menghapus data ini?')">Hapus</a> </td> </tr> <?php endwhile; ?> </table> </body> </html>
File: delete.php
<?php include 'config.php'; if (isset($_GET['id'])) { $id = $_GET['id']; $stmt = $pdo->prepare("DELETE FROM users WHERE id = ?"); $hapus = $stmt->execute([$id]); if ($hapus) { echo "Data berhasil dihapus! <a href='index.php'>Kembali</a>"; } else { echo "Gagal menghapus data."; } } ?>
Tips Keamanan Penting
-
Gunakan konfirmasi penghapusan dengan
onclick="return confirm(...)"
untuk mencegah salah klik. -
Selalu gunakan prepared statements (seperti di PDO) agar aman dari SQL Injection.
-
Jika di aplikasi nyata, sebaiknya gunakan metode POST untuk penghapusan (bukan GET).
-
Pertimbangkan fitur soft delete (menandai data sebagai terhapus, bukan benar-benar menghapus).
Kesimpulan
Dalam artikel ini kamu telah belajar:
-
Cara menampilkan data dengan tombol hapus.
-
Proses menghapus data menggunakan MySQLi dan PDO.
-
Tips keamanan untuk mencegah penghapusan tidak sengaja atau serangan SQL Injection.
Dengan memahami ini, kamu sudah melengkapi fitur CRUD (Create, Read, Update, Delete) — fondasi utama dalam pengembangan aplikasi berbasis PHP dan MySQL.