Tutorial PHP #27: CRUD Dasar dengan PHP Native
1. Apa itu CRUD?
CRUD adalah empat operasi dasar pada database:
- Create - tambah data baru (INSERT)
- Read - baca/tampilkan data (SELECT)
- Update - ubah data yang ada (UPDATE)
- Delete - hapus data (DELETE)
Memahami CRUD adalah fondasi dari hampir semua fitur aplikasi web.
2. Create - INSERT Data
<?php
require_once "db.php";
if ($_SERVER["REQUEST_METHOD"] === "POST") {
$nama = trim($_POST["nama"] ?? "");
$email = trim($_POST["email"] ?? "");
$pass = $_POST["password"] ?? "";
// Validasi sederhana
if (empty($nama) || empty($email) || empty($pass)) {
die("Semua field wajib diisi");
}
// Hash password sebelum simpan
$hashedPass = password_hash($pass, PASSWORD_DEFAULT);
// Prepared statement untuk INSERT
$stmt = mysqli_prepare($conn, "INSERT INTO users (nama, email, password) VALUES (?, ?, ?)");
mysqli_stmt_bind_param($stmt, "sss", $nama, $email, $hashedPass);
if (mysqli_stmt_execute($stmt)) {
$newId = mysqli_insert_id($conn);
echo "User berhasil ditambahkan! ID: $newId";
} else {
echo "Gagal: " . mysqli_error($conn);
}
mysqli_stmt_close($stmt);
}
?>
3. Read - SELECT Data
<?php
require_once "db.php";
// Baca semua user
function getAllUsers($conn): array {
$result = mysqli_query($conn, "SELECT id, nama, email, created_at FROM users ORDER BY id DESC");
$users = [];
while ($row = mysqli_fetch_assoc($result)) {
$users[] = $row;
}
mysqli_free_result($result);
return $users;
}
// Baca user berdasarkan ID
function getUserById($conn, int $id): ?array {
$stmt = mysqli_prepare($conn, "SELECT * FROM users WHERE id = ? LIMIT 1");
mysqli_stmt_bind_param($stmt, "i", $id);
mysqli_stmt_execute($stmt);
$result = mysqli_stmt_get_result($stmt);
return mysqli_fetch_assoc($result) ?: null;
}
$users = getAllUsers($conn);
foreach ($users as $user) {
echo "{$user['nama']} - {$user['email']} <br>";
}
?>
4. Update - UPDATE Data
<?php
require_once "db.php";
if ($_SERVER["REQUEST_METHOD"] === "POST") {
$id = (int) ($_POST["id"] ?? 0);
$nama = trim($_POST["nama"] ?? "");
$email = trim($_POST["email"] ?? "");
if ($id <= 0 || empty($nama) || empty($email)) {
die("Data tidak valid");
}
$stmt = mysqli_prepare($conn, "UPDATE users SET nama = ?, email = ? WHERE id = ?");
mysqli_stmt_bind_param($stmt, "ssi", $nama, $email, $id);
if (mysqli_stmt_execute($stmt)) {
$affected = mysqli_stmt_affected_rows($stmt);
if ($affected > 0) {
echo "Data berhasil diupdate";
} else {
echo "Tidak ada data yang diubah atau ID tidak ditemukan";
}
} else {
echo "Gagal update: " . mysqli_error($conn);
}
mysqli_stmt_close($stmt);
}
?>
5. Delete - DELETE Data
<?php
require_once "db.php";
$id = (int) ($_GET["id"] ?? 0);
if ($id <= 0) {
die("ID tidak valid");
}
// Konfirmasi sebelum hapus
$user = getUserById($conn, $id);
if (!$user) {
die("User tidak ditemukan");
}
$stmt = mysqli_prepare($conn, "DELETE FROM users WHERE id = ?");
mysqli_stmt_bind_param($stmt, "i", $id);
if (mysqli_stmt_execute($stmt)) {
echo "User '{$user['nama']}' berhasil dihapus";
header("Location: index.php");
exit;
} else {
echo "Gagal hapus: " . mysqli_error($conn);
}
mysqli_stmt_close($stmt);
?>
6. Tampilkan Data di HTML Table
<?php require_once "db.php"; $users = getAllUsers($conn); ?>
<table border="1">
<tr>
<th>ID</th>
<th>Nama</th>
<th>Email</th>
<th>Aksi</th>
</tr>
<?php foreach ($users as $user): ?>
<tr>
<td><?= $user["id"] ?></td>
<td><?= htmlspecialchars($user["nama"]) ?></td>
<td><?= htmlspecialchars($user["email"]) ?></td>
<td>
<a href="edit.php?id=<?= $user["id"] ?>">Edit</a>
<a href="delete.php?id=<?= $user["id"] ?>" onclick="return confirm(''Hapus?'')">Hapus</a>
</td>
</tr>
<?php endforeach; ?>
</table>
7. Ringkasan
- CRUD adalah fondasi semua aplikasi database: Create, Read, Update, Delete
- Selalu pakai prepared statement untuk operasi yang melibatkan input user
- Hash password dengan
password_hash()sebelum disimpan - Gunakan
htmlspecialchars()saat menampilkan data ke HTML
Tutorial berikutnya membahas PDO di PHP untuk akses database.
.jpg)
