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.