Cara Memakai Prepared Statements dengan PDO di PHP

tutorial belajar PHP untuk pemula

Dalam 2 tutorial PDO PHP sebelumnya, kita sudah mendiskusikan cara menampilkan dan memasukkan data MySQL dengan metode “normal”. Pada tutorial belajar PHP MySQL saat ini kita akan mengulas cara menjalankan query MySQL dengan metoda yang lebih advanced memakai prepared statements dengan PDO.

Meng-input Data MySQL dengan Prepared Statement PDO

Pembahasan terkait apa itu prepared statement sudah saya bahas dengan lengkap dalam Tutorial PHP MySQL: Pengertian dan Cara Pemakaian Prepared Statements mysqli. Saat ini kita akan lihat bagaimana cara memakainya di dalam extension PDO.

Langsung saja kita masuk kedalam contoh program. Saat ini saya mau menambahkan 1 data kedalam tabel mahasiswa_ilkom memakai prepared statement dengan PDO:

<?php
try  catch (PDOException $e) 
   // tampilkan pesan kesalahan bila koneksi tidak berhasil
   print "koneksi/query bermasalah: " . $e->getMessage() . "<br/>";
   die();
?>

Seperti yang pernah kita bahas pada mysqli extension, untuk menjalankan prepared statement, kita memerlukan 3 langkah: prepare, bind dan execute.

Proses prepare dijalankan memakai method $dbh->prepare(). Method ini memerlukan 1 argumen berupa perintah query yang akan dijalankan. Hasil dari method kemudian disimpan kedalam variabel $stmt. Variabel inilah yang akan kita pakai selama menjalankan proses prepared statement.

Proses bind dilakukan memakai method $stmt->bindParam(). Method ini memerlukan 2 argumen. Argumen pertama ialah angka urutan dari “tempat data” yang ditulis dalam proses prepare. Sebab dalam proses prepare saya menuliskan: ‘INSERT INTO mahasiswa_ilkom VALUES (?, ?, ?, ?, ?)’, maka setiap tanda “?” harus di bind. Urutan tanda “?” inilah yang dipakai dalam argumen pertama method $stmt->bindParam().

Untuk argumen kedua method $stmt->bindParam() ialah variabel penampung yang kemudian akan diisi data. Berikutnya setiap variable yang di defenisikan akan saya input nilai yang cocok.

Sesudah seluruh data diinput kedalam variabel, kita tinggal menjalankan method $stmt->execute() untuk menjalankan query prepared statement.

Bila kamu menjalankan kode program diatas, hasilnya yaitu sebagai berikut:

1 data berhasil ditambahkan

Supaya lebih yakin, kamu dapat menambahkan kode program diatas untuk menampilkan semua isi tabel mahasiswa_ilkom.

Selain memakai tanda “?” untuk tandanya bagian dari data, PDO PHP juga menyediakan cara lain, yaitu dengan menuliskan ‘nama untuk data’ atau terkenal dengan “named parameters prepared statements”.

Berikut ialah revisi contoh program memakai named parameters prepared statemant:

<?php
try  catch (PDOException $e) 
   // tampilkan pesan kesalahan bila koneksi tidak berhasil
   print "koneksi/query bermasalah: " . $e->getMessage() . "<br/>";
   die();
?>

Perbedaan dari kode program sebelumnya ialah pada cara penulisan query dan argumen method bindParam(). Saat ini kita memakai named variable (dimulai dengan tanda “:”), seperti :nim_mhs, :nama_mhs, atau :umur_mhs. Named variable ini berikutnya jadi argumen pertama method $stmt->bindParam().

Versi penulisaan terakhir prepared statement yang akan kita pelajari yaitu dengan menggabungkan proses bind dan execute sekalian. Supaya cara ini dapat dijalankan, data dari prepared statement harus dibuat dalam wujud array. Berikut misalnya:

<?php
try 
   // buat koneksi dengan database
   $dbh = new PDO('mysql:host=localhost;dbname=universitas', "root", "");
 
   // set error mode
   $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
 
   // sediakan query (prepare)
   $stmt = $dbh->prepare('INSERT INTO mahasiswa_ilkom VALUES
   (:nim_mhs, :nama_mhs, :umur_mhs, :tempat_lahir_mhs, :ipk_mhs)');
                
// sediakan "data" query
$nim_mhs="109023031";
$nama_mhs="Jerry Kurniawan";
$umur_mhs=23;
$tempat_lahir_mhs="Malang";
$ipk_mhs=3.1;
 
   // jalankan query (execute)
   $stmt->execute(array(':nim_mhs' => $nim_mhs, ':nama_mhs' => $nama_mhs,
   ':umur_mhs' => $umur_mhs, ':tempat_lahir_mhs' => $tempat_lahir_mhs,
   ':ipk_mhs' => $ipk_mhs ));
 
   // tampilkan hasil proses query
   echo $stmt->rowCount()." data berhasil ditambahkan";
 
   // hapus koneksi
   $dbh = null;
catch (PDOException $e) 
   // tampilkan pesan kesalahan bila koneksi tidak berhasil
   print "koneksi/query bermasalah: " . $e->getMessage() . "<br/>";
   die();
?>

Perbedaan dalam kode program diatas terletak dalam $stmt->execute(). Saat ini method $stmt->execute() kita input dengan array sebagai argumen yang akan jadi ‘data’ untuk query. Dengan metode ini kita tidak mesti memakai method $stmt->bindParam().

Metode prepared statement yang kita pelajari disini dapat jadi alternatif dari cara menjalankan query MySQL dengan cara biasa memakai $dbh->query(). Prepared statements mungkin masih relatif jarang kamu temui, tetapi metoda ini menawarkan keamanan yang lebih dan banyak dipakai di dalam aplikasi PHP yang lebih luas seperti framework PHP.


Butuh Web Developer Makassar atau Jasa SEO di Makassar yang bergaransi? Jangan ragu dengan infanthree.com. Kami juga penyedia Jasa Pembuatan Aplikasi Android di Makassar yang terkemuka. Selain itu ada layanan SEM, SMM, Internet Marketing Agency Makassar dan Social Media, Pembuatan Logo, Konten, Video, Maskot dan Instalasi jaringan ataupun mikrotik, hingga pelatihan komputer dan internet marketing.

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *