CRUD di PHP: Cara Menyimpan Data ke Database MySQL dengan INSERT (Part 13)

Rifqi An Rifqi An
Maret 07, 2026


CRUD di PHP: Cara Menyimpan Data ke Database MySQL dengan INSERT (Part 13)

Hai para ksatria keyboard dan pejuang baris kode! Selamat datang kembali di seri tutorial PHP paling santuy se-jagad maya. Setelah di bagian-bagian sebelumnya kita udah asyik ngoprek soal persiapan server, koneksi database, sampai bikin halaman login sederhana, rasanya kok hampa ya kalau data kita cuma gitu-gitu aja? Ibarat punya dompet tapi isinya angin doang. Nah, hari ini kita bakal belajar cara mengisi dompet database kita dengan data baru! Siap-siap ngoding untuk fungsi INSERT di PHP!

Daftar Isi

Pembuka: Setelah Login, Mau Ngapain Lagi Dong?

Oke, di Part 13 ini, kita akan masuk ke inti dari manajemen data: CRUD. Apa itu CRUD? Bukan nama band metal, Bro! CRUD itu singkatan dari Create, Read, Update, Delete. Ini adalah empat operasi dasar yang wajib kamu kuasai kalau mau main-main sama database.

Bayangin aja gini: kamu udah berhasil bikin pintu gerbang (login page), tapi di dalamnya kosong melompong. Nggak ada barang yang bisa ditambah, dibaca, diubah, apalagi dibuang. Kan sedih! Nah, hari ini kita bakal fokus ke huruf C-nya, alias Create, yang dalam bahasa database diterjemahkan jadi INSERT. Kita bakal belajar cara menambahkan data baru ke database kita.

Apa Itu INSERT? Kok Mirip "Nyoblos"?

Gampangannya, INSERT itu kayak kamu lagi "nyoblos" data baru ke dalam kotak suara database. Setiap kali ada data baru (misalnya, pengguna baru daftar, produk baru di toko online, atau mahasiswa baru mendaftar), kita pakai perintah INSERT ini untuk memasukkannya ke tabel yang sesuai di database.

Intinya, kita ngasih tahu database: "Eh, database! Aku punya data baru nih, tolong masukin ke tabel ini ya, di kolom-kolom ini, dengan nilai-nilai ini." Simpel, kan?

Struktur Dasar Query INSERT INTO

Syntax dasar dari perintah INSERT INTO itu kurang lebih begini:


INSERT INTO nama_tabel (kolom1, kolom2, kolom3, ...)
VALUES (nilai1, nilai2, nilai3, ...);

Penjelasannya:

  • nama_tabel: Ini nama tabel di database kamu yang mau diisi data.
  • (kolom1, kolom2, kolom3, ...): Ini daftar nama kolom di tabel tersebut yang akan kita isi. Urutannya penting banget!
  • VALUES (nilai1, nilai2, nilai3, ...): Ini adalah data atau nilai yang mau kita masukkan ke masing-masing kolom, sesuai urutan yang kita sebutkan sebelumnya.

Penting diingat: jumlah kolom dan nilai harus sama, dan tipe datanya juga harus cocok ya! Kalau nggak, siap-siap error!

Persiapan Database dan Tabel Kita

Untuk tutorial ini, kita asumsikan kamu udah punya database, misalnya namanya db_kampus. Nah, di dalamnya kita butuh tabel buat nyimpen data mahasiswa. Kalau belum ada, yuk kita bikin tabel mahasiswa dengan struktur sederhana ini:


-- Pastikan kamu udah masuk ke database db_kampus
-- USE db_kampus;

CREATE TABLE mahasiswa (
    id INT(11) PRIMARY KEY AUTO_INCREMENT,
    nama VARCHAR(100) NOT NULL,
    nim VARCHAR(15) UNIQUE NOT NULL,
    jurusan VARCHAR(50) NOT NULL,
    angkatan INT(4) NOT NULL
);

Kamu bisa jalankan query SQL di atas lewat phpMyAdmin atau MySQL Workbench kamu. Udah? Sip, lanjut!

Bikin Form Input Data Dulu, Bro! (HTML)

Sebelum kita bisa nyimpen data, kita butuh "keranjang" untuk ngumpulin datanya dari user. Nah, keranjang itu namanya form HTML. Kita bikin form sederhana aja ya, di file tambah_mahasiswa.php.


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Tambah Mahasiswa Baru</title>
    <style>
        body { font-family: Arial, sans-serif; margin: 20px; background-color: #f4f4f4; }
        .container { max-width: 600px; margin: 0 auto; background: #fff; padding: 20px; border-radius: 8px; box-shadow: 0 2px 4px rgba(0,0,0,0.1); }
        h2 { text-align: center; color: #333; }
        form div { margin-bottom: 15px; }
        label { display: block; margin-bottom: 5px; font-weight: bold; }
        input[type="text"], input[type="number"] {
            width: calc(100% - 22px);
            padding: 10px;
            border: 1px solid #ddd;
            border-radius: 4px;
        }
        button {
            background-color: #3b82f6;
            color: white;
            padding: 10px 20px;
            border: none;
            border-radius: 4px;
            cursor: pointer;
            font-size: 16px;
        }
        button:hover { background-color: #2563eb; }
    </style>
</head>
<body>
    <div class="container">
        <h2>Form Tambah Mahasiswa Baru</h2>
        <form action="proses_simpan.php" method="post">
            <div>
                <label for="nama">Nama Lengkap:</label>
                <input type="text" id="nama" name="nama" required>
            </div>
            <div>
                <label for="nim">NIM:</label>
                <input type="text" id="nim" name="nim" required>
            </div>
            <div>
                <label for="jurusan">Jurusan:</label>
                <input type="text" id="jurusan" name="jurusan" required>
            </div>
            <div>
                <label for="angkatan">Angkatan:</label>
                <input type="number" id="angkatan" name="angkatan" required>
            </div>
            <button type="submit">Simpan Data</button>
        </form>
    </div>
</body>
</html>

Perhatikan atribut action="proses_simpan.php" dan method="post". Ini artinya, ketika form disubmit, data akan dikirim ke file proses_simpan.php menggunakan metode HTTP POST.

Kode PHP untuk Menyimpan Data (proses_simpan.php)

Nah, ini dia bagian ngoding PHP-nya. Kita akan membuat file proses_simpan.php yang bertugas menerima data dari form, membuat query INSERT, dan mengeksekusinya ke database.

Koneksi Database (Ulang Sedikit)

Pasti kamu udah familiar banget sama koneksi database kita, kan? Di bagian sebelumnya kita udah bahas detail. Untuk file ini, kita bisa langsung include file koneksi yang sudah ada (misalnya koneksi.php) atau nulis ulang kalau mau lebih mandiri.

Misalnya, kamu punya file koneksi.php seperti ini:


<?php
$host = "localhost";
$user = "root"; // Sesuaikan dengan username MySQL kamu
$pass = "";     // Sesuaikan dengan password MySQL kamu
$db   = "db_kampus"; // Nama database kita

$koneksi = mysqli_connect($host, $user, $pass, $db);

// Cek koneksi
if (!$koneksi) {
    die("Koneksi gagal total, Bro! Errornya: " . mysqli_connect_error());
}
// echo "Koneksi database berhasil, siap tempur!"; // Bisa di-comment atau dihapus nanti
?>

Pastikan file koneksi.php ini berada di lokasi yang bisa diakses oleh proses_simpan.php.

Mengambil Data dari Form (POST)

Di proses_simpan.php, langkah pertama adalah mengambil data yang dikirim dari form menggunakan variabel superglobal $_POST.


<?php
// Include file koneksi database
include 'koneksi.php'; // Pastikan path-nya benar ya!

// Cek apakah data sudah dikirim via method POST
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    // Ambil data dari form
    $nama     = $_POST['nama'];
    $nim      = $_POST['nim'];
    $jurusan  = $_POST['jurusan'];
    $angkatan = $_POST['angkatan'];

    // Ini PENTING! Untuk mencegah SQL Injection.
    // Untuk tutorial dasar ini kita pakai mysqli_real_escape_string.
    // Di produksi, sangat disarankan pakai Prepared Statements! (Nanti kita bahas di level lebih lanjut ya)
    $nama     = mysqli_real_escape_string($koneksi, $nama);
    $nim      = mysqli_real_escape_string($koneksi, $nim);
    $jurusan  = mysqli_real_escape_string($koneksi, $jurusan);
    $angkatan = mysqli_real_escape_string($koneksi, $angkatan);

    // ... selanjutnya bikin query INSERT
} else {
    // Jika tidak diakses melalui POST request, redirect atau tampilkan pesan error
    header("Location: tambah_mahasiswa.php");
    exit();
}
?>

Catatan Penting! Penggunaan mysqli_real_escape_string() itu penting banget untuk mencegah serangan SQL Injection dasar. Tapi ingat, ini bukan solusi paling aman. Di aplikasi sungguhan, kamu wajib pakai Prepared Statements (dengan mysqli_prepare() dan mysqli_stmt_bind_param()) untuk keamanan maksimal. Sabar ya, itu akan kita bahas di level yang lebih tinggi!

Membuat Query INSERT

Setelah data aman di tangan, saatnya menyusun query INSERT kita. Ingat formatnya tadi?


<?php
// ... (kode sebelumnya untuk koneksi dan ambil data) ...

    // Buat query INSERT
    $sql = "INSERT INTO mahasiswa (nama, nim, jurusan, angkatan)
            VALUES ('$nama', '$nim', '$jurusan', '$angkatan')";

    // ... selanjutnya eksekusi query
?>

Perhatikan tanda kutip tunggal (') di sekitar variabel string ($nama, $nim, $jurusan). Untuk tipe data angka seperti $angkatan, tanda kutip tidak wajib, tapi tidak akan jadi masalah besar jika dipakai.

Eksekusi Query dan Cek Error

Terakhir, kita eksekusi query-nya dan cek apakah ada bug atau error. Kalau berhasil, kita bisa kasih pesan sukses. Kalau gagal, kita kasih pesan error biar programmer nggak bingung pas lagi debugging sambil ngopi.


<?php
// ... (kode sebelumnya untuk koneksi, ambil data, dan buat query) ...

    if (mysqli_query($koneksi, $sql)) {
        echo "<script>alert('Data mahasiswa berhasil disimpan! Yey!'); window.location='tambah_mahasiswa.php';</script>";
    } else {
        echo "<script>alert('Error: Data gagal disimpan! Ini bukan salahmu, tapi servernya lagi ngambek. Atau mungkin salah query? " . mysqli_error($koneksi) . "'); window.location='tambah_mahasiswa.php';</script>";
    }

    // Tutup koneksi database biar nggak boros resource server
    mysqli_close($koneksi);
}
// else bagian redirect di awal (sudah ada)
?>

Di sini kita pakai JavaScript (<script>alert(...)</script>) untuk menampilkan pesan dan me-redirect kembali ke halaman form. Cara ini cukup umum untuk tutorial dasar. Untuk aplikasi yang lebih proper, biasanya pakai notifikasi UI yang lebih elegan.

Mari Kita Coba, Bikin Ngopi-Ngopi!

Sekarang, coba kamu buka browser dan akses file tambah_mahasiswa.php (misalnya: http://localhost/belajar_php/tambah_mahasiswa.php). Isi formnya dengan data mahasiswa baru, lalu klik "Simpan Data". Kalau muncul pop-up "Data mahasiswa berhasil disimpan!", itu artinya kamu jago!

Untuk memastikan datanya beneran masuk, kamu bisa cek langsung di phpMyAdmin atau jalankan query SQL ini di console:


SELECT * FROM mahasiswa;

Voila! Data yang kamu masukkan tadi harusnya nongol di sana. Selamat! Kamu baru aja menyelesaikan operasi CREATE pertama di CRUD dengan PHP dan MySQL. Lumayan buat modal pamer ke teman sebelah saat ngopi bareng.

Latihan: Mencuri Resep Indomie Rahasia

Setelah sukses nyimpen data mahasiswa, mari kita naikkan level keseruannya. Kamu adalah seorang hacker ethical yang ditugaskan oleh perusahaan mie instan lain untuk 'mencuri' data resep rahasia Indomie di database mereka. Tentu saja, ini hanya simulasi dan untuk tujuan edukasi!

Skenario: Kamu berhasil menyusup ke halaman admin mereka dan menemukan form untuk 'menambahkan bahan baru'. Tapi kamu curiga, mereka punya tabel tersembunyi bernama resep_rahasia_indomie dengan kolom nama_resep, bahan_utama, bumbu_rahasia_1, dan jumlah_produksi_harian.

Tugas Kamu:

  1. Buat form HTML baru (misalnya form_resep.php) dengan inputan yang sesuai untuk nama_resep, bahan_utama, bumbu_rahasia_1 (ini string), dan jumlah_produksi_harian (ini angka).
  2. Buat file PHP (misalnya curi_resep.php) yang akan memproses data dari form tersebut.
  3. Dalam file curi_resep.php, sambungkan ke database (asumsikan nama database db_mie_instan dan tabel resep_rahasia_indomie sudah kamu buat).
  4. Buat query INSERT untuk memasukkan resep-resep rahasia Indomie palsu (tapi meyakinkan) ke dalam tabel resep_rahasia_indomie. Pastikan kamu "mencuri" minimal 3 resep berbeda! Contoh: "Indomie Goreng Original", "Indomie Kuah Kari Ayam", "Indomie Real Meat Empal Gentong". Buat bumbu rahasianya sendiri yang lucu-lucu ya!
  5. Tampilkan pesan berhasil atau gagal setelah proses penyimpanan.

Clue: Ingat untuk selalu menggunakan mysqli_real_escape_string() (minimal) untuk data yang kamu ambil dari form!

Selamat mencoba, para calon Master CRUD! Di bagian selanjutnya, kita akan belajar cara "membaca" data yang sudah kita masukkan ini, alias operasi READ. Jangan sampai ketinggalan, biar database kamu nggak cuma bisa diisi tapi juga bisa dilihat isinya!

Salam ngoding tanpa bug (atau setidaknya, bug-nya gampang dicari)!

Bagikan Artikel Ini