2014-07-07

Mysql : Mari Menggunakan Mysqli

Sudah lama kita menggunakan perintah dari fungsi-fungsi mysql. Semakin lama, perintah mysql sendiri sudah mulai harus ditinggalkan. Bagaimanapun juga kita yang belajar PHP dari awal harus menerima bahwa saat ini perintah mysql (mysql_connect, _query) harus ditinggalkan. Lalu bagaimana penggantinya?
kemarahan penulis karena harus ganti perintah
Penggantinya adalah perintah mysqli atau pdo. Saya sendiri sebenarnya belajar memakai PEAR! bila kita menggunakan xampp untuk aplikasi belajar php, PEAR sudah jadi satu paket di dalamnya. Dalam tulisan ini saya akan kupas memakai mysqli. Sebagai pendahuluan saya jelaskan alasan kenapa memakai

  • PEAR. pear adalah fungsi2 yang di kumpulkan dalam 1 kelompok. Kamu bisa langsung pakai dengan memanggil file utamanya dan juga kelompok yang kamu akan gunakan (DB). Asumsikan kamu memakai DB, maka hasilnya akan mirip seperti PDO. Namun dari yang saya dapatkan beberapa database tidak di support oleh PEAR?!? Namun pemakaian PEAR sendiri bukan hanya di database saja. Kekurangan yang sangat vital adalah kamu harus install PEARnya?!? Beberapa temuan dari saya, PEAR DB support database jadul?
  • PDO. Seperti penjelasan di atas, pdo lebih kepada koneksi database saja. Saya melihat pdo lebih banyak mendukung database besar dan baru! Cukup layak bila kita memakai untuk database yang kompleks. 
Untuk masalah perbandingan, kecepatan dan lain-lain ... saya kurang mahir untuk perbedaannya.
Mysqli terdiri dari 2 mode yaitu prosedural dan objek. Bila anda dah lama pake mysql dan pindah.. Saran pertama adalah memakai objek. Prosedural lebih merepotkan dari pandangan saya.. untuk mudah mari bandingkan

$con=new mysqli();
$con->query($sql);

vs

$con=mysqli_connect();
mysqli_query($con, $sql);

Bila anda perhatikan, penulisan prosedural lebih panjang daripada yang class. Dalam pembuatan coding, yang pendek lebih baik karena kita bisa memanfaatkan waktu ngetiknya untuk mikir logika program dan databasemu.

KENAPA HARUS GANTI MYSQLI?

PHP terbaru sudah mulai melepas fungsi mysql dan berharap kita mengganti ke fungsi / objek yang lebih bagus. Namun perlu diketahui bahwa mysql dan mysqli secara cepat adalah sama, namun kemampuan mysqli lebih banyak. Mysql (tanpa i) kita bisa asumsikan seorang prajurit normal dengan segala persenjataan. Tetapi mysqli (dengan i) adalah prajurit sama tetapi memiliki alat yang lebih modern.

dalam perkembangan database tak hanya bisa menyimpan saja, tetapi memastikan data terkoneksi dengan lainnya. Itulah sebabnya mysql di kembangkan / improve. I dalam mysqli adalah improve, tetapi bentuk mysql sendiri tidak di ubah-ubah tetapi lebih ditambah. 

Berikutnya kemampuan dari mysqli juga dikembangkan. kemampuan itu seperti adanya kemampuan transaksi. Asumsikan kamu punya jualan barang, melakukan input barang banyak (10).. tetapi saat mau lanjut kamu menemukan klien gk bisa bayar dan batal.. Lalu cara hapusnya gimana?
kalaau di mysql (lama), kamu harus putar otak membuat logika pembatalannya. namun di mysqli kita pakai transaksi yang memberi perintah undo hingga 10x
sejujurnya contohnya akan dibahas pada tutorial berikutnya. Jadi silakan tunggu

KONEKSI

Untuk melakukan koneksi, gunakan perintah ini. Ada berbagai macam metode, tetapi cara ini adalah cara yang disarankan

$DBServer = 'localhost'; 
$DBUser   = 'root';
$DBPass   = '78742ies';
$DBName   = 'work_nasgor';
$conn = new mysqli($DBServer, $DBUser, $DBPass, $DBName);

cara yang biasa saya temui adalah menulis langsung didalam. Tetapi sebenarnya cara ini ada keuntungannya, yaitu bila kamu memakai 2 database, kamu tak perlu ketik ulang $DBSERVER.. apalagi kalau nama lainnya sama.. Alasan lain apabila kamu akan memindahkan ke server baru, yang di edit adalah config atasnya bukan isinya mysqli( )

ERROR 

dalam bikin program kita pasti ada error. Demikian juga saat koneksi, errornya harus di tangkap dengan metode
if ($conn->connect_error)  
     die($conn->connect_error);

Untuk error lain akan dijelaskan sekalian. Dalam mengeluarkan error kita harus punya beberapa patokan, hal pertama karena ini adalah error untuk koneksi, berikan informasi apa error dan dimana. Jadi daripada menulis die(....) berikan keterangan yang dapat di fahami

die("tidak tersambung [".$conn->connect_error."]");

QUERY

Hal terpenting berikutnya dalam menjalankan query, disini query ada 2 macam yaitu

  • query yang akan mengeluarkan hasil
  • query yang akan menjalankan perintah.
pada dasarnya saya lihat keduanya sama saja, tetapi dibedakan menjadi 2 karena memakai asumsi mengeluarkan hasil berhubungan dengan perintah select dan lainnya disebut menjalankan perintah saja. Ada banyak metode query, saya bahas dari yang paling sederhana hingga ke bentuk yang menurut saya sulit.


$rs=$conn -> query($sql);
if($rs === false) {
  echo 'Wrong SQL: ' . $sql . ' Error: ' . $conn->error ;
}

Format penulisan adalah seperti di atas, termasuk cara mendapatkan errornya. Apabila query yang digunakan adalah yang sederhana
select * from table
atau
select * from table where a=1
 atau yang menurut anda mudah. Gunakan perintah di atas. Namun apabila query tersebut mengandung variabel yang didapat dari luar! misal ada var A. kita dapat memakai prepare, format umum :
if ($stmt = $mysqli->prepare("SELECT * FROM City WHERE Name=?")) { 
.....
}

mengenai penggunaan akan dibahas di artikel berikutnya. Kita akan memakai con->query

MENGELUARKAN TAMPILAN

untuk mengeluarkan tampilan, ada 2 metode yaitu

  • array
  • object
saya lebih dominan pake array karena ngetiknya cepet
$row=$rs->fetch_assoc();

Biasanya saya menulis
$row=$rs->fetch_array(MYSQLI_ASSOC);
dengan syarat kamu harus pastikan query (yang dijadikan variabel $rs) benar. dan untuk hasilnya bisa di akses layaknya array!
MYSQLI_ASSOC saya gunakan agar kuncinya keluar sebagai tulisan bukan angka. Bila kamu langsung ketik
$row=$rs->fetch_array(); 
maka yang keluar kunci array 1,2,3 dan nama fieldnya. 

Untuk fetch lainnya
  • fetch_array
  • fetch_object
  • fetch_row
TUTUP
terpenting dalam setiap membuat database terbuka, kita harus tutup dengan
$conn->close

Terimakasih untuk

Tidak ada komentar: