Setelah mempelajari cara menampilkan data dari database, menambah data (Create / Insert), langkah berikutnya adalah membuat fitur edit data di PHP dan MySQL agar pengguna dapat memperbarui informasi di tabel.
Fitur ini umum digunakan pada sistem manajemen data, misalnya:
-
Mengubah data produk di toko online
-
Memperbarui profil pengguna
-
Mengedit artikel di dashboard admin
Dalam tutorial ini, kita akan belajar dua versi:
-
Menggunakan MySQLi
-
Menggunakan PDO (PHP Data Objects)
Persiapan Database dan Tabel
Sebelum mulai, pastikan kamu sudah memiliki database. Misalnya, kita punya tabel bernama users
seperti berikut:
CREATE TABLE users ( id INT(11) AUTO_INCREMENT PRIMARY KEY, nama VARCHAR(100), email VARCHAR(100), alamat TEXT );
Kita asumsikan data sudah ada di tabel ini, dan kita ingin mengedit salah satu baris datanya.
Struktur Folder
Buat folder seperti ini di dalam htdocs
atau proyekmu:
edit_data/ ├── config.php ├── edit.php ├── update.php
Versi 1: Mengedit Data dengan MySQLi
File: config.php
<?php $koneksi = mysqli_connect("localhost", "root", "", "belajarphp"); // Cek koneksi if (!$koneksi) { die("Koneksi gagal: " . mysqli_connect_error()); } ?>
File: edit.php
File ini akan menampilkan form edit berdasarkan ID yang dikirim melalui URL, misalnya:edit.php?id=1
<?php include 'config.php'; $id = $_GET['id']; $query = mysqli_query($koneksi, "SELECT * FROM users WHERE id='$id'"); $data = mysqli_fetch_assoc($query); ?> <!DOCTYPE html> <html lang="id"> <head> <meta charset="UTF-8"> <title>Edit Data User</title> </head> <body> <h2>Edit Data User</h2> <form action="update.php" method="POST"> <input type="hidden" name="id" value="<?= $data['id']; ?>"> <label>Nama:</label><br> <input type="text" name="nama" value="<?= $data['nama']; ?>"><br><br> <label>Email:</label><br> <input type="email" name="email" value="<?= $data['email']; ?>"><br><br> <label>Alamat:</label><br> <textarea name="alamat"><?= $data['alamat']; ?></textarea><br><br> <button type="submit" name="update">Simpan Perubahan</button> </form> </body> </html>
File: update.php
<?php include 'config.php'; if (isset($_POST['update'])) { $id = $_POST['id']; $nama = $_POST['nama']; $email = $_POST['email']; $alamat = $_POST['alamat']; $query = "UPDATE users SET nama='$nama', email='$email', alamat='$alamat' WHERE id='$id'"; $update = mysqli_query($koneksi, $query); if ($update) { echo "Data berhasil diperbarui! <a href='edit.php?id=$id'>Kembali</a>"; } else { echo "Gagal memperbarui data: " . mysqli_error($koneksi); } } ?>
Versi 2: Mengedit Data dengan 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: edit.php
<?php include 'config.php'; $id = $_GET['id']; $stmt = $pdo->prepare("SELECT * FROM users WHERE id = ?"); $stmt->execute([$id]); $data = $stmt->fetch(PDO::FETCH_ASSOC); ?> <!DOCTYPE html> <html lang="id"> <head> <meta charset="UTF-8"> <title>Edit Data User (PDO)</title> </head> <body> <h2>Edit Data User</h2> <form action="update.php" method="POST"> <input type="hidden" name="id" value="<?= $data['id']; ?>"> <label>Nama:</label><br> <input type="text" name="nama" value="<?= $data['nama']; ?>"><br><br> <label>Email:</label><br> <input type="email" name="email" value="<?= $data['email']; ?>"><br><br> <label>Alamat:</label><br> <textarea name="alamat"><?= $data['alamat']; ?></textarea><br><br> <button type="submit" name="update">Simpan</button> </form> </body> </html>
File: update.php
<?php include 'config.php'; if (isset($_POST['update'])) { $id = $_POST['id']; $nama = $_POST['nama']; $email = $_POST['email']; $alamat = $_POST['alamat']; $stmt = $pdo->prepare("UPDATE users SET nama=?, email=?, alamat=? WHERE id=?"); $update = $stmt->execute([$nama, $email, $alamat, $id]); if ($update) { echo "Data berhasil diperbarui! <a href='edit.php?id=$id'>Kembali</a>"; } else { echo "Gagal memperbarui data."; } } ?>
Penjelasan Singkat
Fitur | MySQLi | PDO |
---|---|---|
Tipe koneksi | Prosedural / OOP | OOP |
Keamanan | Cukup, bisa SQL Injection jika tidak hati-hati | Aman dengan prepared statements |
Portabilitas | Hanya MySQL | Banyak DB (MySQL, PostgreSQL, SQLite, dll) |
Untuk proyek baru, PDO lebih direkomendasikan karena lebih fleksibel dan aman.
Tips Keamanan
-
Gunakan prepared statements untuk mencegah SQL Injection.
-
Lakukan validasi dan sanitasi input sebelum disimpan.
-
Jika di web publik, tambahkan CSRF token untuk form edit.
Kesimpulan
Pada artikel ini kamu telah belajar:
-
Cara membuat form edit data dengan PHP.
-
Implementasi update data di database menggunakan MySQLi dan PDO.
-
Tips keamanan untuk mencegah serangan SQL Injection.
Langkah berikutnya, kita akan belajar menghapus data dari database (DELETE) dengan aman dan terstruktur.