Panduan langkah demi langkah membuat aplikasi pengelolaan (CRUD) data user menggunakan Prepared Statement.
CRUD adalah singkatan dari Create (Buat), Read (Baca), Update (Ubah), dan Delete (Hapus). Ini adalah operasi dasar yang dilakukan sebagian besar aplikasi web terhadap database.
Penting: Tutorial ini menggunakan Prepared Statement. Ini adalah standar keamanan modern untuk mencegah serangan SQL Injection. Jangan gunakan query SQL biasa untuk menangani input user!
Pertama, buat database baru dan tabel users. Copy kode SQL berikut dan jalankan di
phpMyAdmin.
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
nama VARCHAR(100) NOT NULL,
email VARCHAR(100) NOT NULL UNIQUE,
no_hp VARCHAR(20) NOT NULL
);
Buat file koneksi.php untuk menghubungkan skrip PHP dengan database MySQL.
<?php
$host = "localhost";
$user = "root";
$pass = "";
$db = "crud_db"; // Sesuaikan nama database
$conn = new mysqli($host, $user, $pass, $db);
if ($conn->connect_error) {
die("Koneksi gagal: " . $conn->connect_error);
}
?>
Pertama, buat form HTML untuk menginput data.
<form action="tambah.php" method="POST">
<input type="text" name="nama" placeholder="Nama Lengkap" required><br>
<input type="email" name="email" placeholder="Email" required><br>
<input type="text" name="hp" placeholder="No HP" required><br>
<button type="submit">Simpan</button>
</form>
Kemudian, buat kode PHP untuk memproses inputan tersebut dan menyimpannya ke database dengan aman.
<?php
include 'koneksi.php';
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$nama = $_POST['nama'];
$email = $_POST['email'];
$hp = $_POST['hp'];
// Gunakan Prepared Statement
$stmt = $conn->prepare("INSERT INTO users (nama, email, no_hp) VALUES (?, ?, ?)");
// "sss" artinya 3 parameter bertipe String
$stmt->bind_param("sss", $nama, $email, $hp);
if ($stmt->execute()) {
echo "Data berhasil ditambahkan!";
} else {
echo "Error: " . $stmt->error;
}
$stmt->close();
}
?>
Menampilkan daftar user dari database dalam bentuk tabel.
<?php
include 'koneksi.php';
$sql = "SELECT * FROM users";
$result = $conn->query($sql);
?>
<table border="1">
<tr>
<th>No</th>
<th>Nama</th>
<th>Email</th>
<th>Aksi</th>
</tr>
<?php while($row = $result->fetch_assoc()): ?>
<tr>
<td><?= $row['id'] ?></td>
<td><?= htmlspecialchars($row['nama']) ?></td>
<td><?= htmlspecialchars($row['email']) ?></td>
<td>
<a href="edit.php?id=<?= $row['id'] ?>">Edit</a> |
<a href="hapus.php?id=<?= $row['id'] ?>" onclick="return confirm('Yakin?')">Hapus</a>
</td>
</tr>
<?php endwhile; ?>
</table>
Proses update juga wajib menggunakan Prepared Statement.
<?php
include 'koneksi.php';
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$id = $_POST['id'];
$nama = $_POST['nama'];
$email = $_POST['email'];
$stmt = $conn->prepare("UPDATE users SET nama=?, email=? WHERE id=?");
$stmt->bind_param("ssi", $nama, $email, $id); // "ssi": String, String, Integer
if ($stmt->execute()) {
header("Location: index.php");
} else {
echo "Update gagal.";
}
$stmt->close();
}
?>
Hapus data berdasarkan ID.
<?php
include 'koneksi.php';
$id = $_GET['id'];
$stmt = $conn->prepare("DELETE FROM users WHERE id=?");
$stmt->bind_param("i", $id); // "i": Integer
if ($stmt->execute()) {
header("Location: index.php");
} else {
echo "Gagal menghapus.";
}
$stmt->close();
?>
Selamat! Kamu sudah berhasil membuat sistem CRUD sederhana. Selalu ingat rumus Prepared Statement: Prepare -> Bind -> Execute. Ini adalah kunci agar website kamu terhindar dari sql injection.
Untuk keamanan lebih lanjut bisa di tambahkan function strip_tags, pada $_POST supaya format tag HTML di bersihkan dari input atau function lain yang berhubungan dengan keamanan input supaya lebih aman.
Selalu tingkatkan keamanan input dari user agar terhindar dari hal-hal yang tidak diinginkan.