ARI JULIANTO Network www.arijulianto.com

Oleh | PHP | | Dibaca 6.020 kali | 0 komentar

Kali ini saya akan mencoba membahas mengenai koneksi PHP dengan database MySQL dengan menggunakan MySQLI. Pada tutorial kali ini kita akan membahasnya karena sekarang versi PHP sudah 5.6 dan sejak PHP rilis versi 5.5.x koneksi database menggunakan mysql_* sudah deprecated dan dianjurkan untuk tidak lagi digunakan terkait beberapa alasan. Yang akan saya bahas kali ini adalah salah satu anjuran dari PHP sendiri, yakni MySQLI (untuk PDO akan saya coba bahas di lain waktu).

Oke, yang akan saya bahas di tutorial kali ini adalah perintah-perintah dasar dengan tanpa adanya statement PREPARE. Ya agar lebih aman sebaiknya gunakan fitur prepare, namun kali ini saya tidak membahasnya. Baik, langsung saja kita ke pembahasan.

Cara Koneksi ke Database denga MySQLI

Untuk melakukan koneksi ke databse MySQL dengan MySQLI (MySQL Improvment) tidak serumit dengan mysql_ yang membutuhkan 2 perintah: koneksi login ke MySQL dan koneksi ke database. Syntax koneksi dengan MySQLI dapat dilihat pada script berikut:

$var = new mysqli(host, username, password, db_name);

Untuk contoh koneksinya dapat dilihat seperti ini

<?php
$mysqli = new mysqli("localhost", "root", "", "mydb");

Menggunakan Perintah INSERT, SELECT, UPDATE dan DELETE

Tidak jauh berbeda dengan mysql_, pnggunnan mysqli hampir sama. Untuk perintah output seperti SELECT, yang membedakan adalah bila menggunakan MySQLi kita bisa menggunakan 3 pilihan pada hasil fetch data, yakni: row dengan index numerik, row dengan index nama field dan row dengan index campuran numerik dan nama field. Baiklah, kita bahas selengkapnya.

SELECT

Untuk perintah select dapat dibuat dengan syntax seperti berikut!

$res = $mysqli->query("SELECT *|field from namaTabel [kondisi where]");
$data = $mysli->fetch_array(TYPE); atau
$data = $mysqli-fetch_assoch();

Ket: TYPE memilih salah satu dari pilihan berikut:
MYSQLI_NUM : digunakan untuk index berupa angka
MYSQLI_ASSOC : digunakan untuk index berupa nama field
MYSQLI_BOTH : digunakan untuk index angka dan nama field

Untuk lebih jelasnya, silahkan lihat contoh berikut

<?php
// contoh 1
include 'mysqli_connect.php';
$res = $mysqli->query("SELECT * from tbl_siswa order by nama");
while($data = $res->fetch_array(MYSQLI_NUM)){
   echo "Nama: $data[0] ($data[3])<br />>";
}


// contoh 2
$res = $mysqli->query("SELECT * from tbl_siswa order by nama");
while($data = $res->fetch_array(MYSQLI_ASSOC)){
   echo "Nama: $data[nama] ($data[kelas])<br />>";
}


// contoh 3
$res = $mysqli->query("SELECT * from tbl_siswa order by nama");
while($data = $res->fetch_assoch()){
   echo "Nama: $data[nama] ($data[kelas])<br />>";
}

INSERT

Untuk perintah INSERT, sama seperti halnya SELECT, yang membedakan hanya query SQLnya saja. Oya satu yang ingin saya sampaikan ketika insert data adalah di MySQLi ini saya akan memberikan cara menginsert data secara aman untuk mencegah QSL Inject. Perhatikan pada contoh berikut!

<?php
// parse data yang dikirim dari input form
$nis = $mysqli->real_escape_string($_POST['nis']);
$nama = $mysqli->real_escape_string($_POST['nama']);
$gender = $mysqli->real_escape_string($_POST['gender']);
$kelas = $mysqli->real_escape_string($_POST['kelas']);
$tgl_lahir = $mysqli->real_escape_string($_POST['tgl_lahir']);
// proses simpan ke database
$mysqli->query("INSERT into tbl_siswa(nis,nama,gender,kelas,tgl_lahir) VALUES('$nis','$nama','$gender','$kelas','$tgl_lahir')");
// cek jumlah data yang berhasil disimpan
if($mysqli->affected_rows>0){
   echo '<p>Data baru berhasil ditambahkan...</p>';
}else{
   echo '<p>Data baru gagal ditambahkan. Silahkan coba lagi!</p>';
}

UPDATE dan DELETE

Untuk perintah UPDATE dan DELETE saya akan satukan saja, karena saya anggap untuk perintah query sudah tidak ada masalah. Saya sebelumnya sudah pernah membahas query-query dasar MySQL, silahkan aja coba cari. Oke untuk perintah UPDATE dan DELETE saya ingin tekankan, jangan sampe lupa memberi parameter. Pentingnya memberi parameter pada saat hapus dan update akan menentukan nasib data kita. Saya pernah melakukan kesalahan ini, semua data jadi sama. Dan dari kejadian itu saya selalu perhatian terhadap dua perintah SQL ini :D

<?php
/** perintah UPDATE **/
// parse data yang dikirim dari input form
$nis = $mysqli->real_escape_string($_POST['nis']);
$nama = $mysqli->real_escape_string($_POST['nama']);
$gender = $mysqli->real_escape_string($_POST['gender']);
$kelas = $mysqli->real_escape_string($_POST['kelas']);
$tgl_lahir = $mysqli->real_escape_string($_POST['tgl_lahir']);
// proses simpan ke database
$mysqli->query("UPDATE tbl_siswa set nama='$nama', gender='$gender', kelas='$kelas', tgl_lahir='$tgl_lahir' where nis='$nis'");
// cek hasil update
if($mysqli->affected_rows>0){
   echo '<p>Data siswa berhasil diubah...</p>';
}else{
   echo '<p>Data siswa gagal diubah. Silahkan coba lagi!</p>';
}


/** perintah DELETE **/
// parse data yang dikirim dari input hidden form
$nis = $mysqli->real_escape_string($_POST['nis']);
// proses simpan ke database
$mysqli->query("DELETE from tbl_siswa where nis='$nis'");
// cek hasil delete
if($mysqli->affected_rows>0){
   echo '<p>Data siswa berhasil dihapus...</p>';
}else{
   echo '<p>Data siswa gagal dihapus. Silahkan coba lagi!</p>';
}