Simple Mysql Error catcher with PHP
Dalam membuat sebuah aplikasi, ada kalanya kita terpaksa melakukan query diluar model/controller. Karena manual, kemungkinan terjadi error sangatlah mungkin. Untuk beberapa kasus bahkan yang masih membuat model data secara manual juga dapat mengalami hal serupa.
Apabila Anda pengguna fungsi mysql, atau mysqli atau untuk DBMS yang lain oleh PHP memang sudah disediakan fungsi errornya. Yaitu kalau dalam mysql misalnya adalah “mysql_error()”.
Sebagai contoh Query:
Apabila terjadi error, pesan error hanyalah akan menampilkan pesan errornya saja, tetapi tidak memberi tahu Query yang mana yang error sebenarnya.
Unknown column 'J' in 'field list'
Tentu kalau Querynya kita tahu dimana letaknya tidak begitu masalah. tetapi terdapat di dalam sebuah class yang merupakan turunan dari class yang di dalamnya ada banyak sekali query pasti membuat orang cukup merasa pusing mencari letak errornya.
Berikut ini mungkin adalah cara simple untuk mendapatkan error-nya, sekaligus memberitahu Query yang mana yang error.
Codingnya dapat dilihat sebagai berikut
$query = mysql_query($theQuery );
$mess = mysql_error();
if($mess!="")
{
echo "<p>Query Error the Msg,: <br /><strong>".$mess."<strong></p>";
echo "<p>On Query:<br /><pre>$theQuery </pre></p>";
die();
}
Intinya, di dalam coding di atas ada 3 tahap. Pertama melakukan query, kemudian menampilkan pesan error melalui fungsi “mysql_error()“. Apabila Query berjalan mulus tanpa error, maka fungsi “mysql_error()” tidak akan mengembalikan value apapun, apabila terjadi error, baru variable “$mess” akan terisi pesan errornya. Kemudian tinggal diberi kondisi saja apabila ketemu errornya, kita print dengan Querynya supaya lebih jelas
Hasilnya:
Query Error the mess: Unknown column 'J' in 'field list' On Query: SELECT JobID,J obName FROM job ORDER BY `JobName`
Tetapi kembali lagi, cara di atas hanya memberi tahu di query mana terjadinya error. Masalahnya apabila error tersebut terjadi di dalam Query dalam sebuah class yang sangat besar. Cukup susah melakukan tracingnya. Apabila kita menggunakan fasilitas extension x-debug yang disediakan PHP, error Query tidak akan muncul di tracingnya.
Lalu bagaimana membuat kita lebih bisa melakukan tracing error? Setelah mencari-cari bagaimana melakukan tracing berbekal dari pengalaman melihat beberapa framework PHP dan Abstraction Layer Class PHP, akhirnya gw menemukannya. Bahwa sebenarnya PHP memiliki sebuah function untuk melakukan bug tracing, yaitu debug_backtrace(). Penerapannya dalam coding dapat dilihat sebagai berikut:
echo "<p>Trace :</p>";
echo "<table width=\"700\" align=\"center\"><tr><td><pre>";
print_r($currentFile);
echo "</pre></td></tr></table>";
Jadi mungkin kalau digabungkan dari contoh sebelumnya adalah sebagai berikut:
$result = mysql_query($queryString );
$mess = mysql_error();
if($mess!="")
{
$currentFile = debug_backtrace();//__FILE__;
echo "<p>Query Error the msg: <br /><strong>".$mess."<strong></p>";
echo "<p>On Query:<br /><pre>$queryString </pre></p>";
echo "<p>Trace :</p>";
echo "<table width=\"700\" align=\"center\"><tr><td><pre>";
print_r($currentFile);
echo "</pre></td></tr></table>";
die();
}
Dengan demikian ketika terjadi error, akan muncul juga stack trace dari coding yang sedang dijalankan. Termasuk di dalamnya terlihat urutan object mana yang dipanggil, line berapa dari file apa, pathnya juga bisa didapatkan. Sisanya, untuk memudahkan penggunaan, coding di atas dapat dibungkus menjadi sebuah Class yang dapat digunakan berulang-ulang tanpa lagi susah menuliskan ulang semua perintah didalamnya. Semoga berguna
Popularity: 1% [?]
This Blog
My name is Rizky Gunawan, graduated(Waw, thanks God I can graduated :P ) from Computer Science Major. My Hobby is Coding, and my speciality is web development using PHP. Currently I'm working on some press company in Indonesia as Internal Software Developer.
Tags
ajax AMD AMD HSF Anime Anime Music Ar tonelico ATI Biostar Clannad core i5 Corsair Crysis GeForce Gigabyte hymmnos Intel Intel HSF javascript Linux Microsoft Motherboard MSI Music Video mySQl Nvidia ONKYO Overclocking P55 PC Games Phenom II X4 php Project Skripsi Soundcard Thermalright thermalright Ultra 120 Extreme Touhou Ubuntu VGA Card Warhead Web Design web project Windows Windows 7 Wordpress ThemeReent Comment
Archives



