Nulis-Ilmu.com

Tutorial Elektronika dan Komputer

  • Home
  • Elektronika
  • Komputer
  • Javascript
You are here: Home / PHP / Mengenal Statemen Prepare MySQL

Mengenal Statemen Prepare MySQL

17 November 2014 By Eko Purnomo

mengenal statemen prepare mysql

Statemen Prepare adalah fitur yang digunakan untuk menjalankan perintah query SQL yang sama secara berulang dengan lebih efisien. Sebagai contoh statemen Prepare digunakan saat kita menginsert beberapa record sekaligus dalam satu kali eksekusi. Memang ada fasilitas seperti Insert data multi menggunakan mysql_multi_query, namun dengan menggunakan metode Prepare akan diperoleh kecepatan eksekusi yang lebih baik.

Prinsip kerja Prepare secara singkat meliputi tiga tahapan, yaitu :


  1. Prepare, adalah proses menyiapkan statemen  template  perintah SQL dan mengirim kepada database. Nilai-nilai tertentu dibiarkan terbuka/kosong dan selanjutnya ini disebut parameter dn diberi label “?”. Contoh : INSERT INTO User VALUES(?,?,?).
  2. Memparsing database, mengkompile dan menjalankan optimasi query pada statemen  template perintah SQL lalu menyimpan tanpa mengeksekusinya.
  3. Eksekusi, adalah proses menjalankan statemen perintah SQL yang sudah disiapkan tadi dengan data yang sudah diikat oleh aplikasi. Aplikasi kemudian mengeksekusi statemen perintah query sebanyak yang diinginkan dengan nilai yang berbeda.

Jika dibandingkan dengan menjalankan perintah SQL secara langsung, statemen Prepare memiliki beberapa keuntungan, yaitu :

  1. Statemen Prepare mengurangi waktu parsing karena persiapan perintah query hanya dilakukan sekali saja meskipun query dijalankan beberapa kali.
  2. Parameter yang sudah diikat oleh aplikasi akan mengurangi penggunaan bandwith koneksi ke server karena kita hanya mengirimkan nilainya saja tidak dengan perintah query secara utuh.
  3. Statemen Prepare juga berguna untuk mengatasi serangan berupa SQl Injection. Hal ini karena nilai parameter dikirim menggunakan protokol yang berbeda, jadi tidak perlu proses menggunakan escape karakter dengan benar. Jika template statemen perintah SQL asli tidak berasal dari input eksternal, serangan SQL Injection tidak dapat terjadi .

Berikut ini contoh script PHP untuk statemen Prepare MySQL

1. Statemen Prepare menggunakan MySQLI Extension

 <?php   
$dbHost = "localhost";
$dbUser = "root";
$dbPass = "123";
$dbName = "MySQLIDB2";

// membuat koneksi mysql
$conn = mysqli_connect($dbHost, $dbUser, $dbPass, $dbName);

// mengecek koneksi mysql
if ($conn->connect_error) die("Koneksi Gagal: " . $conn->connect_error);
else echo "Koneksi Database ".$dbName." Berhasil ...<br/><br/>";

// menyiapkan statemen prepare dan tautan parameter
$stmt = $conn->prepare("INSERT INTO User (nama, password, email) VALUES (?, ?, ?)");
$stmt->bind_param("sss", $nama, $password, $email);

// mengeset parameter dan mengeksekusinya
$nama = "Agus";
$password = "123456";
$email = "agus@example.com";
$stmt->execute();

$nama = "Budi";
$password = "qwerty";
$email = "budi@example.com";
$stmt->execute();

$nama = "Candra";
$password = "abcdef";
$email = "agus@example.com";
$stmt->execute();

echo "Tiga Data baru berhasil dibuat";

//menutup statemen prepare
$stmt->close();

// menutup koneksi mysql
$conn->close();
?>

Note : “sss” pada fungsi bind_param adalah keterangan untuk string. Keterangan yang lain yang bisa dipakai adalah i untuk integer, b untuk blob dan d untuk double. Kita harus menyertakan parameter ini untuk setiap nilai.

2. Statemen Prepare menggunakan PDO

 <?php   
$dbHost = "localhost";
$dbUser = "root";
$dbPass = "123";
$dbName = "MyPDODB";
try {
$conn = new PDO("mysql:host=$dbHost;dbname=$dbName", $dbUser, $dbPass);
// set the PDO error mode untuk exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// menyiapkan sql dan tautan parameter
$stmt = $conn->prepare("INSERT INTO User (nama, password, email)
VALUES (:nama, :password, :email)");
$stmt->bindParam(':nama', $nama);
$stmt->bindParam(':password', $password);
$stmt->bindParam(':email', $email);
// insert baris pertama
$nama = "Agus";
$password = "123456";
$email = "agus@example.com";
$stmt->execute();
// insert baris kedua
$nama = "Budi";
$password = "qwerty";
$email = "budi@example.com";
$stmt->execute();
// insert baris ketiga
$nama = "Candra";
$password = "abcdef";
$email = "agus@example.com";
$stmt->execute();
echo "Tiga Data baru berhasil dibuat";
}
catch(PDOException $e)
{
echo $sql . "<br>" . $e->getMessage();
}
// menutup koneksi
$conn = null;
?>

Referensi :

  • //www.w3schools.com/php/php_mysql_prepared_statements.asp

Filed Under: PHP

Kategori

  • Android
  • Blogging
  • CSS
  • Desain
  • Elektronika
  • HTML
  • Internet
  • Javascript
  • Komputer
  • Mikrokontroler
  • PHP
  • Website

Pos-pos Terbaru

  • Rangkaian Adaptor 12 Volt 3 Ampere
  • 10 Aplikasi Transportasi Online Terbaru 2018
  • 3 Cara Screenshot di Laptop Windows
  • Rangkaian Adaptor 12V 35Ampere
  • Komunitas Desainer Kampung Jepara
  • Solder Yang Bagus dan Berkualitas
  • Cara Melewatkan Parameter ke dalam Fungsi pada Bahasa C
  • Parameter Dalam Bahasa C: Formal dan Aktual
  • Prototipe Fungsi dalam Bahasa C
  • Cara Menggunakan Fungsi dalam Bahasa C
  • Home
  • Privacy
  • Disclaimer
  • Kontak

Copyright © 2024 ยท Nulis-ilmu.com