Sejak PHP 5 dirilis, muncul extension baru sebagai API ke RDBMS MySQL. Extension baru ini dinamakan MySQLI atau MySQL Improved. MySQLI memperkenalkan cara baru dalam berinteraksi dengan database server MySQL melalui PHP (dan konon lebih cepat dan lebih secure, walaupun gw sendiri belum pernah melakukan benchmark).
Yang paling keren menurut gw adalah model OOP baru dari MySQLI ini. Jadi di MySQLI kita bisa menggunakan 2 style coding, OOP ataupun prosedural. Model OOP-nya asyyiik banget dan lengkap.
Untuk nginstall extension MySQLI di Linux cukup gampang, cari aja paket-paket binary yang udah disediain ma distro masing-masing atau kalo kita biasa compile sendiri maka kita harus nambahin flag :
--with-mysqli=shared,/usr/local/mysql/bin/mysql-config
pada command configure kita
Kalo di Windows lebih gampang lagi, cukup tambahin baris :
extension=php_mysqli.dll
pada deretan module-module extension yang laennya di file php.ini. Trus restart deh Web Server-nya.
Langsung aja kita liat contoh implementasi extension MySQLI di source code PHP kita, begini nih caranye :
<?php
// buat constant
define('DB_HOST', 'localhost');
define('DB_USER', 'dicarve');
define('DB_PASS', 'dicarvepass');
define('DB_NAME', 'dicarvedb');
define('DB_PORT', '3306');
// cek dulu apa extensionnya dah aktif pa belom?
if (!extension_loaded('mysqli')) {
echo 'Extension MySQLI belum terinstall dengan benar. check php.ini';
exit();
}
// buat objek mysqli
$mysqli_obj = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME, DB_PORT);
/* cek apakah koneksi berhasil dilakukan */
if (mysqli_connect_errno()) {
echo 'Koneksi gagal dilakukan dengan alasan : '.mysqli_connect_error();
exit();
} else {
echo 'Koneksi berhasil dilakukan<br />'."\n";
echo 'Versi Server MySQL : '.$mysqli_obj->server_info."<br />\n";
}
/* tutup koneksi ke db server */
$mysqli_obj->close();
?>
Ya ampuunn, ternyata gampang bener yah!! Weiittsss nanti dulu, itu baru koneksi-nya aja gimana untuk ngirim query ke database server-nya? ini sedikit contoh query SELECT yang menghasilkan resultset (atau recordset, whatever lahh) :
<?php
// include file source code koneksi database sebelumnya
// yang misalnya udah kita kasih nama 'mysqli.inc.php';
require 'mysqli.inc.php';
// untuk melakukan query kita menggunakan
// metode 'query' milik kelas mysqli
// hasil dari pemanggilan metode ini nantinya akan
// menghasilkan sebuah objek baru milik kelas mysqli_result
$result_obj = $mysqli->query("SELECT nama FROM tabel_dicarve");
// cek apakah query berhasil dilakukan
if ($result_obj) {
// gunakan properti publik 'num_rows' milik kelas mysqli_result
// untuk mengetahui jumlah baris hasil query
echo 'Ditemukan '.$result_obj->num_rows.' baris data<br /><br />';
echo 'Data-data yang ditemukan adalah sbb : <br />';
// gunakan metode 'fetch_row' untuk mengambil data baris demi baris dari resultset
while ($data = $result_obj->fetch_row()) {
echo $data[0].'<br />'."\n";
}
// bebaskan memory resultset
$result_obj->close();
}
$mysqli_obj->close();
?>
Lohh?? Cuman segitu doank toh MySQLI? Tau gitu mah gw mendingan pake extension MySQL biasa aja dechh (cappeee dehh!!). Ya Enggak Lah!!! ada beberapa fitur baru yang menarik di MySQLI selaen koneksi dan query sederhana, misalnya meng-execute query SQL secara multiple dengan langsung dalam satu statement (bukan dengan pemanggilan metode 'query' berulang-ulang). Coba liat contoh berikut ini deh :
<?php
// include file source code koneksi database sebelumnya
// yang misalnya udah kita kasih nama 'mysqli.inc.php';
require 'mysqli.inc.php';
// setiap query SQL kita pisahkan dengan semi-colon atawa titik koma
$queries = "SELECT gmd FROM tabel_gmd;";
$queries .= "SELECT nama FROM tabel_dicarve;";
$queries .= "SELECT judul FROM tabel_biblio";
// gunakan metode 'multi_query'
// untuk meng-execute string query SQL multiple secara simultan
$multi_query_obj = $mysqli_obj->multi_query($queries);
/* execute multi query */
if ($multi_query_obj) {
// loop masing-masing result-nya
while (true) {
// ambil result set multiple query dengan metode 'store_result'
if ($result = $mysqli_obj->store_result()) {
while ($row = $result->fetch_row()) {
echo $row[0]."<br />\n";
}
// bebasin memory resultset
$result->close();
}
// apakah masih ada resultset lagi?
// kalau udah abis kita stop loop-nya
if (!$mysqli_obj->more_results()) {
break;
} else {
// kita buat pemisah antar resultset dengan garis horizontal HTML <hr>
echo "<hr>\n";
}
}
}
/* tutup koneksi ke server */
$mysqli_obj->close();
?>
Nah itu dia sekilas penggunaan extension MySQLI di PHP, masih banyak fitur lain yang saya ga bisa jelasin satu persatu di sini (takutnya blog ini malah isinya MySQLI melulu). Buat programmer PHP yang demen pake model OOP, MySQLI cocok banget untuk digunain sebagai bagian dari kode-kode mereka. SELAMAT MENCOBA!!
0 Komentar