Pada panduan belajar PHP MySQL kali ini kita akan membahas mengenai pemakaian prepared statements, yakni cara menampilkan data MySQL menggunakan mysqli prepared statements.
Cara Menampilkan Data MySQL Menggunakan Prepared Statements mysqli
Setelah membahas teori mengenai pengertian prepared statements di panduan sebelumnya, kita akan seketika praktek mengenai cara pemakaian prepared statements bagi menampilkan sebuah data dari database MySQL.
Kali ini saya akan mencoba menampilkan tabel mahasiswa_ilkom dengan prepared statements. Tabel ini kita bikin di panduan PHP MySQL: Cara Menampilkan Tabel MySQL dari PHP (mysql_fetch_row).
Seperti yang telah dibahas, bagi membangun prepared statements, kita membutuhkan 3 langkah: prepared, bind, dan excecute.
Langkah pertama-tama: prepared
Selaku contoh, saya ingin menampilkan seluruh kolom dari tabel mahasiswa_ilkom dimana nama mahasiswanya ialah “Neil Situmorang”. Sesuai dengan fungsinya, di pada proses prepared ini kita hanya butuh mempersiapkan query MySQL, tanpa ada data.
Bagi proses prepared, mysqli PHP menyediakan kegunaan mysqli_prepare(). Guna ini membutuhkan 2 argumen, yakni variabel hasil pemanggilan kegunaan mysqli_connect(), dan prepared query yang akan dijalankan. Berikut ialah contoh penulisannya:
1 |
<?php<br/>// bikin koneksi dengan MySQL, gunakan database: universitas<br/>$link = mysqli_connect('localhost', 'root', '', 'universitas');<br/> <br/>// bikin prepared statements<br/>$stmt = mysqli_prepare($link, SELECT * FROM mahasiswa_ilkom WHERE nama=?);<br/>?> |
Hasil pemanggilan kegunaan mysqli_prepare() berikutnya disimpan kedalam variabel $stmt. Variabel ini akan kita gunakan di pada proses bind, execute dan pada proses menampilkan data. Kamu bebas jikalau ingin menukar variabel ini dengan nama lain.
Langkah kedua: bind
Di proses bind, kita akan mengirimkan data kepada MySQL. Data yang akan dikirim ialah bagi menggantikan tanda “?” yang sebelumnya dibangun di proses prepared. Di pada mysqli PHP, proses bind dilakukan menggunakan kegunaan mysqli_stmt_bind_param(). Guna ini membutuhkan setidaknya 3 buah argumen, berikut contohnya:
1 |
<?php<br/>// siapkan data query<br/>$nama_mhs=Neil Situmorang;<br/> <br/>// hubungkan data dengan prepared statements<br/>mysqli_stmt_bind_param($stmt, s, $nama_mhs);<br/>?> |
Argumen pertama-tama dari kegunaan mysqli_stmt_bind_param() ialah variabel hasil pemanggilan kegunaan mysqli_prepare(), pada contoh kita ialah varabel $stmt.
Argumen kedua ialah string yang menunjukkan jenis tipe data argumen ketiga, yakni data yang akan diinput kedalam query (kita akan membahas isi argumen kedua ini sesaat lagi).
Argumen ketiga ialah data yang akan menggantikan tanda “?” dari query, pada contoh kita ialah “Neil Situmorang”. Tetapi karena kegunaan mysqli_stmt_bind_param() membutuhkan data pada format variabel, saya mesti menyimpannya terlebih dahulu ke pada variabel $nama_mhs.
Argumen kedua dari kegunaan mysqli_stmt_bind_param() membutuhkan pembahasan tersendiri. Argumen ini berisi data string yang menunjukkan jenis tipe data argumen ketiga. PHP menyediakan 4 jenis tipe data:
- i = variabel bertipe integer
- d = variabel bertipe double
- s = variabel bertipe string
- b = variabel bertipe blob (binary)
Karena di pada contoh saya mengunakan variabel $nama_mhs yang bertipe string, karenanya di pada argumen kedua ditulis: “s”. Tetapi apabila saya mengganti variabel ketiga menjadi umur yang bertipe integer, karenanya argumen kedua ini menjadi “i”.
Langkah ketiga: execute
Setelah proses bind selesai, langkah berikutnya ialah menjalankan query dengan menggunakan kegunaan mysqli_stmt_execute(). Guna ini membutuhkan 1 buah argumen, yakni variabel hasil pemanggilan kegunaan mysqli_prepare():
1 |
<?php<br/> mysqli_stmt_execute($stmt);<br/>?> |
Guna mysqli_stmt_execute() menginstruksikan kepada MySQL bagi segera menjalankan petunjuk prepared statement yang telah dibangun. Hingga disini proses menjalankan petunjuk query telah terkirim ke MySQL. Berikutnya, kita akan menampilkan data hasil query.
Menampilkan data hasil query
Bagi menampilkan hasil query, kita mengambil data MySQL dengan kegunaan mysqli_stmt_get_result(). Guna ini membutuhkan 1 argumen berupa variabel hasil kegunaan mysqli_prepare(). Guna ini pun mengembalikan nilai bertipe resources yang berikutnya dapat digunakan bagi menampilkan data.
1 |
<?php<br/>// ambil hasil query<br/>$result=mysqli_stmt_get_result($stmt);<br/>?> |
Berikutnya, bagi menampilkan data kita dapat menggunakan cara lazimnya menggunakan mysql_fetch_row() atau mysql_fetch_array():
1 |
<?php<br/>// tampilkan hasil query<br/>while ($row= mysqli_fetch_row($result)) {<br/> echo $row[0] $row[1] $row[2] $row[3] $row[4];<br/> echo <br />;<br/>}<br/>?> |
Langkah terakhir yang bersifat opsional (alternatif) ialah menutup proses prepared statement dengan kegunaan mysqli_stmt_close(). Tetapi sama dengan kegunaan mysqli_close(), jikalau kita tak menulisnya, PHP secara otomatis akan menutup koneksi ke MySQL ketika halaman selesai di proses.
Dengan menggabungkan seluruh fungsi-fungsi prepared statements yang telah kita bahas, berikut ialah contoh kode programnya secara komplit:
1 |
<?php<br/>// bikin koneksi dengan MySQL, gunakan database: universitas<br/>$link = mysqli_connect('localhost', 'root', '', 'universitas');<br/> <br/>// cek koneksi<br/>if (!$link) {<br/> die('Koneksi Error : '.mysqli_connect_errno().<br/> ' - '.mysqli_connect_error());<br/>}<br/> <br/>// bikin prepared statements<br/>$stmt = mysqli_prepare($link, SELECT * FROM mahasiswa_ilkom WHERE nama=?);<br/> <br/>// cek query<br/>if (!$stmt) {<br/> die('Query Error : '.mysqli_errno($link).<br/> ' - '.mysqli_error($link));<br/>}<br/><br/>// siapkan data query<br/>$nama_mhs=Neil Situmorang;<br/> <br/>// hubungkan data dengan prepared statements<br/>mysqli_stmt_bind_param($stmt, s, $nama_mhs);<br/> <br/>// jalankan query<br/>mysqli_stmt_execute($stmt);<br/> <br/>// ambil hasil query<br/>$result=mysqli_stmt_get_result($stmt);<br/> <br/>// tampilkan hasil query<br/>while ($row= mysqli_fetch_row($result)) {<br/> echo $row[0] $row[1] $row[2] $row[3] $row[4];<br/> echo <br />;<br/>}<br/> <br/>// tutup statements<br/>mysqli_stmt_close($stmt);<br/> <br/>// tutup koneksi<br/>mysqli_close($link);<br/>?><br/><br/> |
Seandainya kode program diatas dijalankan, hasilnya ialah selaku berikut:
1 |
099145055 Neil Situmorang 22 Medan 1.90 |
Selain fungsi-fungsi yang kita bahas di panduan kali ini, saya pun menambahkan kegunaan bagi memeriksa kesalahan seperti yang pernah kita bahas di panduan cara menampilkan pesan kesalahan (error) mysqli, yakni kegunaan mysqli_errno dan mysqli_error().
Prepared Statement mysqli Object Style
Selaku alternatif, berikut ialah cara penulisan prepared statement menggunakan object style mysqli. Method yang digunakan relatif hampir sama dengan procedural style yang kita bahas diatas.
1 |
<?php<br/>// bikin koneksi dengan MySQL, gunakan database: universitas<br/>$mysqli = new mysqli(localhost, root, ,universitas);<br/><br/>// cek koneksi<br/>if ($mysqli->connect_errno) {<br/> die('Koneksi gagal: ' .$mysqli->connect_errno.<br/> ' - '.$mysqli->connect_error);<br/>}<br/><br/>// bikin prepared statements<br/>$stmt = $mysqli->prepare(SELECT * FROM mahasiswa_ilkom WHERE nama=?);<br/><br/>// cek query<br/>if (!$stmt) {<br/> die('Query Error : '.$mysqli->errno.<br/> ' - '.$mysqli->error);<br/>}<br/><br/>// siapkan data query<br/>$nama_mhs=Neil Situmorang;<br/><br/>// hubungkan data dengan prepared statements<br/>$stmt->bind_param(s, $nama_mhs);<br/><br/>// jalankan query<br/>$stmt->execute();<br/><br/>// hubungkan hasil query<br/>$result = $stmt->get_result();<br/><br/>// tampilkan query<br/>while ($row= $result->fetch_row()) {<br/> echo $row[0] $row[1] $row[2] $row[3] $row[4];<br/> echo <br />;<br/>}<br/><br/>// tutup statements<br/>$stmt->close();<br/><br/>// tutup koneksi<br/>$mysqli->close();<br/>?> |
Pada panduan PHP MySQL kali ini kita telah membahas mengenai cara penggunaan prepared statements MySQL untuk menampilkan data. Di panduan berikutnya kita akan bahas cara menggunakan mysqli prepared statement untuk proses input data kedalam database MySQL.
Sumber https://www.duniailkom.com/