Selamat datang di Part 40 dari seri tutorial pemrograman PHP! Di bagian ini, kita akan membahas topik penting untuk performa aplikasi web: Prepared Statements. Prepared statements memungkinkan kita untuk mengoptimalkan query database, mencegah SQL injection, dan meningkatkan keamanan aplikasi kita. Sebelumnya, kita telah belajar tentang Membangun Sistem Antrian (Queue) dengan Redis di PHP. Sekarang, kita akan fokus pada interaksi database yang efisien.
Prasyarat:
Bayangkan Anda memesan kopi setiap hari di kedai yang sama. Alih-alih memberi tahu barista resepnya setiap saat, Anda cukup menyebutkan "kopi biasa". Prepared statements bekerja seperti itu: kita menyiapkan 'resep' query sekali, lalu hanya memberikan datanya berulang kali. Ini menghemat waktu pemrosesan database dan mengurangi risiko kesalahan.
Prepared statements adalah cara untuk mengirimkan query SQL ke database server secara terpisah dari data yang akan digunakan dalam query tersebut. Database server kemudian dapat mengompilasi query sekali dan menggunakannya berkali-kali dengan data yang berbeda.
Mari kita lihat contoh penggunaan prepared statements dengan PDO:
<?php
// Koneksi ke database (ganti dengan informasi koneksi Anda)
$host = 'localhost';
$dbname = 'nama_database';
$username = 'nama_pengguna';
$password = 'kata_sandi';
try {
$pdo = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
echo "Koneksi gagal: " . $e->getMessage();
exit;
}
// Query SQL dengan placeholder
$sql = "INSERT INTO users (nama, email) VALUES (:nama, :email)";
// Mempersiapkan statement
$stmt = $pdo->prepare($sql);
// Data yang akan dimasukkan
$nama = 'John Doe';
$email = 'john.doe@example.com';
// Binding parameter dan eksekusi
$stmt->bindParam(':nama', $nama);
$stmt->bindParam(':email', $email);
// Eksekusi statement
if ($stmt->execute()) {
echo "Data berhasil dimasukkan!";
} else {
echo "Terjadi kesalahan.";
}
// Contoh dengan array
$data = [
'nama' => 'Jane Doe',
'email' => 'jane.doe@example.com'
];
$stmt = $pdo->prepare($sql);
$stmt->execute($data);
if ($stmt->execute($data)) {
echo "Data berhasil dimasukkan (menggunakan array)!";
} else {
echo "Terjadi kesalahan (menggunakan array).";
}
// Menutup koneksi
$pdo = null;
?>
Penjelasan Kode:
$pdo->prepare($sql) untuk mempersiapkan query. Ini mengirimkan query ke database server untuk di kompilasi.$stmt->bindParam() untuk mengikat placeholder dengan nilai. Ini memberikan data ke query yang sudah di kompilasi.$stmt->execute() untuk menjalankan query.Buatlah sebuah fungsi PHP yang menerima data nama dan email, lalu menggunakan prepared statements untuk memasukkan data tersebut ke dalam tabel users di database Anda.