semoga ada yang belikan |
SAY NO TO MYSQL FUNCTION.. WELCOME MYSQLI
Sebelumnya mau info kalau mysql tidak memiliki fungsi sebanyak mysqli, kedepannya kita pasti akan memanfaatkan mysqli!! bahkan kl mau dibilang akan ada waktu kita akan belajar namanya innodb/transaksi table di mysql. Walaupun akan lebih baik pake database non-mysql buat transaksi, tetapi kita membahas sesuatu yg pemula dahulu.
Karena pemula biasanya pake mysql, maka pembahasannya adalah mysql dahulu atau sekalian aja pake mysqli. di mysqli kita biasa memakai mysqli_error(). Namun simpan pemakaian mysqli_error ini dahulu kita lanjut kepada alasan kedua.
KERAPIAN SCRIPT
apa yang terjadi kalau script yang anda buat dan sudah online muncul error seperti inierror on bla bla ...alasan yg inilah yang mendasari kita untuk tidak pake mysql_die(). Tetapi bagaimana cara agar mengetahui error tetapi juga tidak merugikan kamu. Mari asumsikan kalau kamu pemula dalam php dan memakai di lokal, kamu bisa langsung pake metode mysql_die yang kutulis di artikel lain. . gw menulisnya
$sql="query disini";$res=mysql_query($sql)or die(mysql_error());
PENULISAN QUERY YANG RAPI
Untuk menulis query anda bisa menulis langsung
select * from dataku where bla=1
tapi kedepannya kita akan menghadapi penulisan query yang panjang seperti berikut
SELECT dd_diag, COUNT( dd_diag ) c, d.d_index str FROM `klinik_daftardiagnosa` , klinik_daftar, klinik_diagnosa d WHERE `dd_daf` = daf_id AND daf_timeArrive = '$date1' AND daf_timeArrive = '$date2' AND dd_diag = d_id GROUP BY dd_diag ORDER BY `c` DESC limit 15tentu kita akan pusing membacanya.. dan kalau ada error akan sulit mencarinya.. itulah sebabnya saya punya kebiasaan (kalau mau disebut buruk) menulis sebagai berikut
SELECT
dd_diag, COUNT( dd_diag ) c, d.d_index str
FROM `klinik_daftardiagnosa` , klinik_daftar, klinik_diagnosa d
WHERE `dd_daf` = daf_id
AND daf_timeArrive >= '$date1'
AND daf_timeArrive <= '$date2'
AND dd_diag = d_id
GROUP BY dd_diag
ORDER BY `c` DESC
limit 15
KENDALIKAN ERROR
seperti yang kita ketahui, mengendalikan error melalui mysql_die(). Namun bila ini sudah ada di web sebenarnya bisa berabe khan!! itu gw mengajarkan tehnik yaitu mendeteksi dimana web ini dijalankan. Bila di local, silakan aja ada error dan stop (die(mysql_error()). Tapi tidak di web sebenarnya!!Yang perlu kita butuhkan saat ini adalah pengendali error dan juga tampilan yang tepat agar kita tak salah.. Itu sebabnya saya kembangkan pembahasan membuat fungsi error sendiri.
FUNGSI ERROR
karena semua fungsi memakai konsep- mysql_query
- check apakah ok..
maka kita akan membuat semacam fungsi yang berisi mysql_query dan mysql_error. Namun karena disini saya mau mengangkat mysqli.. Mari bikin based on mysqli.. Saya memilih mysqli prosedural (bukan fungsi)
Pertama pastikan koneksi ok
$link = mysqli_connect("localhost", "my_user", "my_password", "world");
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error()); exit();
}
berikutnya kita membuat sql seperti tulisan di atas (yang bertingkat-tingkat) untuk kerapian saja./* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error()); exit();
}
$sql="bla bla";
berikutnya bikin fungsi dan beri nama query(). perhatikan bahwa ini masih dalam localhost jadi lebih pendek
function query($sql)
{
global $link;
$res=@mysqli_query($sql);
if(!$res){
die(mysqli_error($link)."
$sql:
$sql ");
}else{
return $res;
}
}/*function */
untuk menggunakan pakailah $link=query($sql); bila ngak ada masalah silakan lanjut, tapi bila ada masalah akan muncul error dan program berhenti.{
global $link;
$res=@mysqli_query($sql);
if(!$res){
die(mysqli_error($link)."
$sql:
$sql ");
}else{
return $res;
}
}/*function */
UNTUK DI WEB YANG BERJALAN
kita wajib merubah isi dari fungsi tersebut..
function query($sql)
{
global $link;
$res=@mysqli_query($sql);
if(!$res)
{
if($_SERVER['REMOTE_ADDR']=='127.0.0.1')
{
die(mysqli_error($link)."
$sql:
$sql ");
}else{
$file = 'error.txt';
// Open the file to get existing content
$current = file_get_contents($file);
// Append a new person to the file
$current .= mysqli_error($link)."\nsql=$sql\n";
// Write the contents back to the file
file_put_contents($file, $current);
}
return FALSE;
}
else
{
return $res;
}
}/*function */
{
global $link;
$res=@mysqli_query($sql);
if(!$res)
{
if($_SERVER['REMOTE_ADDR']=='127.0.0.1')
{
die(mysqli_error($link)."
$sql:
$sql ");
}else{
$file = 'error.txt';
// Open the file to get existing content
$current = file_get_contents($file);
// Append a new person to the file
$current .= mysqli_error($link)."\nsql=$sql\n";
// Write the contents back to the file
file_put_contents($file, $current);
}
return FALSE;
}
else
{
return $res;
}
}/*function */
inti dari fungsi ini adalah
- check bila sql benar
- bila salah liat apakah yang akses localhost ato bukan
- bila localhost lakukan perintah normal yaitu DIE
- bila bukan kirim ke file error
Dengan adanya tambahan ini, kamu harus membuat sebuah kondisi bila data yang terkirim salah maka akan keluar error / peringatan kepada user!! atau terserah apa kondisi yang menurut anda layak. Mungkin saat ini belum terlihat perlu, namun ada baiknya persiapkan secara dini
Semoga fungsi ini mampu jadi perhatian anda kedepannya.
Semoga fungsi ini mampu jadi perhatian anda kedepannya.
KESIMPULAN
- persiapkan error control!
- kerapian sql perlu karena kita bisa saja di masa depan menulis query nan panjang
- liat dimana kita menulis query, bila di local maka lakukan die! bila tidak lakukan pencatatan
- selalu persiapkan kondisi jika kita mendapatkan query yang salah (setelah proses fungsi query).
Tidak ada komentar:
Posting Komentar