CRUD (Create, Read, Update, Delete) adalah konsep dasar dalam pengelolaan data pada aplikasi web. Di tutorial sebelumnya, kita sudah menggunakan MySQLi procedural. Kini saatnya kita naik level dengan belajar CRUD PHP MySQL Menggunakan MySQLi Object-Oriented (OOP), pendekatan yang lebih modern, rapi, dan fleksibel.
Dengan MySQLi OOP, setiap koneksi dan query dikelola sebagai objek, sehingga kode menjadi lebih terstruktur dan mudah dikembangkan.
MySQLi
(MySQL Improved) adalah ekstensi PHP untuk berinteraksi dengan database MySQL. Mode Object-Oriented (OOP) memungkinkan kamu menulis kode seperti ini:
$conn = new mysqli("localhost", "root", "", "belajarphp");
Objek $conn
kemudian bisa digunakan untuk berbagai operasi seperti query, fetch, dan error handling.
Struktur Folder CRUD
crud_oop/ ├── config.php ├── index.php ├── tambah.php ├── edit.php ├── hapus.php
Langkah 1: Membuat Koneksi Database (config.php
)
<?php $servername = "localhost"; $username = "root"; $password = ""; $database = "belajarphp"; $conn = new mysqli($servername, $username, $password, $database); // Cek koneksi if ($conn->connect_error) { die("Koneksi gagal: " . $conn->connect_error); } ?>
Penjelasan:
-
new mysqli()
membuat koneksi baru ke database. -
Jika koneksi gagal,
connect_error
akan berisi pesan error.
Langkah 2: Menampilkan Data (Read) (index.php
)
<?php include 'config.php'; $result = $conn->query("SELECT * FROM users"); ?> <!DOCTYPE html> <html lang="id"> <head> <meta charset="UTF-8"> <title>Daftar User (MySQLi OOP)</title> </head> <body> <h2>Daftar User</h2> <a href="tambah.php">+ Tambah Data</a><br><br> <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 = $result->fetch_assoc()) : ?> <tr> <td><?= $row['id']; ?></td> <td><?= $row['nama']; ?></td> <td><?= $row['email']; ?></td> <td><?= $row['alamat']; ?></td> <td> <a href="edit.php?id=<?= $row['id']; ?>">Edit</a> | <a href="hapus.php?id=<?= $row['id']; ?>" onclick="return confirm('Yakin ingin menghapus data ini?')">Hapus</a> </td> </tr> <?php endwhile; ?> </table> </body> </html>
Penjelasan:
-
$conn->query()
menjalankan perintah SQL. -
$result->fetch_assoc()
mengambil hasil query dalam bentuk array asosiatif.
Langkah 3: Menambah Data (Create) (tambah.php
)
<?php include 'config.php'; if (isset($_POST['simpan'])) { $nama = $_POST['nama']; $email = $_POST['email']; $alamat = $_POST['alamat']; $sql = "INSERT INTO users (nama, email, alamat) VALUES ('$nama', '$email', '$alamat')"; if ($conn->query($sql)) { echo "Data berhasil disimpan! <a href='index.php'>Kembali</a>"; } else { echo "Error: " . $conn->error; } } ?> <!DOCTYPE html> <html lang="id"> <head> <meta charset="UTF-8"> <title>Tambah Data User</title> </head> <body> <h2>Tambah Data User</h2> <form method="POST"> <label>Nama:</label><br> <input type="text" name="nama" required><br><br> <label>Email:</label><br> <input type="email" name="email" required><br><br> <label>Alamat:</label><br> <textarea name="alamat" required></textarea><br><br> <button type="submit" name="simpan">Simpan</button> </form> </body> </html>
Penjelasan:
-
INSERT INTO
digunakan untuk menambahkan data baru. -
$conn->query($sql)
menjalankan query insert.
Langkah 4: Mengedit Data (Update) (edit.php
)
<?php include 'config.php'; $id = $_GET['id']; $result = $conn->query("SELECT * FROM users WHERE id=$id"); $data = $result->fetch_assoc(); if (isset($_POST['update'])) { $nama = $_POST['nama']; $email = $_POST['email']; $alamat = $_POST['alamat']; $sql = "UPDATE users SET nama='$nama', email='$email', alamat='$alamat' WHERE id=$id"; if ($conn->query($sql)) { echo "Data berhasil diperbarui! <a href='index.php'>Kembali</a>"; } else { echo "Error: " . $conn->error; } } ?> <!DOCTYPE html> <html lang="id"> <head> <meta charset="UTF-8"> <title>Edit Data User</title> </head> <body> <h2>Edit Data User</h2> <form method="POST"> <label>Nama:</label><br> <input type="text" name="nama" value="<?= $data['nama']; ?>" required><br><br> <label>Email:</label><br> <input type="email" name="email" value="<?= $data['email']; ?>" required><br><br> <label>Alamat:</label><br> <textarea name="alamat" required><?= $data['alamat']; ?></textarea><br><br> <button type="submit" name="update">Update</button> </form> </body> </html>
Penjelasan:
-
Data diambil dengan query
SELECT
. -
Setelah form disubmit, query
UPDATE
dijalankan untuk menyimpan perubahan.
Langkah 5: Menghapus Data (Delete) (hapus.php
)
<?php include 'config.php'; if (isset($_GET['id'])) { $id = $_GET['id']; $sql = "DELETE FROM users WHERE id=$id"; if ($conn->query($sql)) { echo "Data berhasil dihapus! <a href='index.php'>Kembali</a>"; } else { echo "Error: " . $conn->error; } } ?>
Penjelasan:
-
Query
DELETE FROM
digunakan untuk menghapus data berdasarkanid
. -
Sebelum menghapus, pastikan ID valid agar tidak terjadi kesalahan.
Tips Tambahan Keamanan
-
Gunakan prepared statements untuk mencegah SQL Injection.
-
Validasi setiap input dengan
filter_var()
atau fungsi serupa. -
Pastikan ada konfirmasi sebelum menghapus data.
-
Tambahkan sistem login jika CRUD digunakan di halaman admin.
Kesimpulan
Dalam artikel ini kamu telah belajar membuat CRUD (Create, Read, Update, Delete) menggunakan MySQLi Object-Oriented, meliputi:
-
Membuat koneksi database dengan
$conn = new mysqli()
-
Menampilkan data dengan
$conn->query()
-
Menambah data dengan
INSERT
-
Mengedit data dengan
UPDATE
-
Menghapus data dengan
DELETE
Pendekatan OOP MySQLi ini lebih modern, mudah dibaca, dan cocok digunakan untuk proyek skala kecil hingga menengah.