2014-12-02

mysqli buat pemula

Tulisan berikut lebih kepada membuat cheat code buat memakai mysqli memakai mysqli. Konsepnya disini adalah kita membuat sebuah fungsi/kelas sendiri. jadi yang harus kamu lakukan adalah copy paste kodingku dan edit2 yang menurut kamu harus/layak di edit.
bermain di pantai

Fungsi disini memakai fungsi sederhana saja. Namun saya akan membahas beberapa fungsi yang lebih ke arah keamanan. Jadi dibandingkan ada query langsung dijalakan.. kita melakukan pengechekan terlebih dahulu.

Kita mulai dari coding sederhana..

$host="localhost";
$user="root";
$pass="";
$db="work_sejahtera";

$mysqli = new mysqli($host, $user, $pass, $db);

/* Membuka Koneksi */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}else{
//evertyhing looks fine

}

printf("Host information: %s\n", $mysqli- > host_info);

/* Menutup Koneksi */
$mysqli- > close();

konsep di atas adalah membuka koneksi lalu menutupnya. Bila anda perhatikan saya menulis else padahal tidak diperlukan. Hal ini saya biasakan untuk dokumentasi, biasa saya sisipkan sesuatu penjelasan dibawahnya

Berikutnya adalah tentang mengingat coding. Seorang programer itu jangan sekedar 'mengingat nama fungsi' .. tetapi pintar agar mudah mengingat 'nama fungsi'. Bila kita ingat mysql_connect.. kenapa ngak sekalian inget yg lebih mudah.. dalam hal ini kita harus mikir untuk mengetik cepat

disinilah kita akan menggunakan class buatan sendiri. Yang akan membawa pertanyaan kenapa bikin class sendiri padahal sudah disediakan oleh si class mysqli.. bukannya boros?

pertama untuk koneksi dan query kita memang terlihat boros. Namun kadang kita menginginkan semacam keamanan. contoh dalam kasus ini adalah sebelum menjalankan query, kita ingin memastikan nilainya angka atau string! Untuk mudah kita memakai angka..

QUERY DENGAN PARAMETER ANGKA

logika untuk coding ini secara umum adalah
  1. siapkan query
  2. jalankan query
  3. check apakah query berhasil atau gagal

bila membaca pada tulisan saya sebelumnya, anda akan sadar bahwa saya tidak menulis query dalam fungsinya tetapi diletakkan di variabel lalu menjalankannya

$sql='...';
$q=$db->query();
if(!$q){ /* error */ }

asumsikan query kita
select nama from pasien where id='6';

dimana 6 adalah parameternya! Tapi apa yang terjadi bila yang masuk adalah '6!' atau '6 ' (ada spasi tapi kamu tidak tahu).. maka mau ngak mau kamu harus melakukan perbaikan logika..

check parameternya

bila parameter masalah maka tentukan apa yang harus dilakukan seperti stop atau perbaiki? Untuk kasus angka coba perbaiki. Nantinya kita akan spesifikasikan apa yang akan kita kerjakan sesuai kebutuhan kamu. Tentu saja ini masalah keamanan jangan di anggap remeh dahulu
bila dijalankan maka jalankan query hingga check apakah query berhasil
bila tidak dijalankan jelaskan kenapa error

KENAPA MEMBUAT CLASS SENDIRI

kembali ke asus kenapa kita harus repot2 bikin class sendiri. Karena kita ingin menyingkat ketikan. Daripada membuat fungsi berkali2 untuk keluar tampilan, kenapa ngak bikin 1 fungsi yang melakukan semua.. contoh mengeluarkan isi dari table (1 data).. kita butuh 2 fungsi (ignore penjelasan yang tidak pake fungsi)
siapkan query (asumsikan langsung jadi variable sql tanpa di filter seperti tulisan atas)
jalankan query
tampilkan hasilnya

sebenarnya ada 3 yaitu jalankan query dan pastikan berhasil. namun kalau kita lihat codingnya.. dibutuhkan 3 line untuk menjalankannya. Walau aslinya kita bisa bikin jadi 1 !! namun bukan itu yang jadi perhatian dalam tulisan ini.

Intinya disini untuk mendapatkan hasil data harus 2x jalan.. padahal kita ingin buru2.. dan biasanya kita suka malas kl ngetik query, fetch.. kenapa tidak membuat 1 fungsi yang langsung jalan sekaligus?!? kita bisa bundel dalam 1 fungsi dan kasi nama listData..

ListData adalah nama fungsi yang biasa kupakai, tidak menutup kemungkinan pakai nama lain. Di coding lain malah memakai nama fetchOne (untuk 1 data) dan fetchAll (data lebih dari 1). Atau Result yang bisa kita ketik resOne atau result (bukan resultAll). Untuk tipe datanya biasa saya memakai array dibandingkan memakai objek ( $data -> blabla ).

Sebagai penutup, mari copy paste class yang saya miliki dan 'ubah' sesuai nama yang anda 'sukai' (klik tulisannya). Jangan lupa credits dan cara pakai dimasukkan supaya tidak lupa !

Kedepannya saya akan memakai class ini ya

Tidak ada komentar: