Simple Mysql Error catcher with PHP
CategoriesGuide, PHP | Posted By : リズキ
Tags: ,
Comments (0) | On May 21, 2010 2:00 pm

Simple MySQL Error catcher

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:

$query = mysql_query("[Some Query here]")or die(mysql_error());

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

           $theQuery = "SELECT JobID,J obName FROM job ORDER BY `JobName`";
           $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:

$currentFile = debug_backtrace();
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:

            $queryString = "SOME QUERY"
            $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% [?]

No Comments

No comments yet.

RSS feed for comments on this post. TrackBack URI

Leave a comment

:) :( :d :"> :(( \:d/ :x 8-| /:) :o :-? x_x :-q :-bd :!! :)>- more »

  • Live Checking With AJAX & jQUERY

    http://neo.rizkhey.net/wp-content/uploads/2009/08/ajax.gif

    Beberapa tahun yang lalu( :D ) gw menuliskan tutroial membuat live checking dengan AJAX, Well waktu itu gw lagi ngebut »»

    Live Checking With AJAX & jQUERY
  • Little View My New Samsung SyncMaster BX2450 – LED Monitor

    http://neo.rizkhey.net/wp-content/uploads/2010/08/20100826_005-450x313.jpg

    Sekitar 3tahun lalu gw membeli LCD kalau tidak salah waktu itu tahun 2007 saat hendak Lebaran, dan baru dapat setelah »»

    Little View My New Samsung SyncMaster BX2450 – LED Monitor
  • Documentation Software with PHP

    http://neo.rizkhey.net/wp-content/uploads/2010/08/Untitled-1-450x380.jpg

    Gw pernah ingin membuat pendokumentasian untuk semua code yang pernah gw buat. Tetapi sayang seperti biasa tidak mood dan juga »»

    Documentation Software with PHP
  • Kelulusan dari akademi “kost”

    http://neo.rizkhey.net/wp-content/uploads/2010/08/20100807_007-450x253.jpg

    hmmm Sudah berapa tahun gw nge-kost. Mungkin dari SMA, sekitar 9 setengah tahun kali yah. Walau kalau dibilang lamanya gw »»

    Kelulusan dari akademi “kost”
  • Nokia N900: “Unable to connect via USB. Device storage in use”

    http://neo.rizkhey.net/wp-content/uploads/2010/07/N900_Error.jpg

    pic. Taken from "The Maemo" Setelah sekian lama gw menggunakan Nokia N900, Akhirnya kemarin gw menemukan sesuatu yang bener-bener buat jengkel. »»

    Nokia N900: “Unable to connect via USB. Device storage in use”
  • Installing Apache 2.2, PHP5, dan Mysql di Windows Based PC

    http://my.rizkhey.net/files/spec/325801.JPG

    Seminggu sudah rasanya kesibukan semakin membara di kehiduapn gw, makin sedikit waktu untuk sekedar menuliskan sesuatu di Blog, ini. Kurang lebih »»

    Installing Apache 2.2, PHP5, dan Mysql di Windows Based PC
  • My Comment About Nokia N900 – Maemo 5 based Smartphone from Nokia

    http://neo.rizkhey.net/wp-content/uploads/2010/07/DSC02831-450x337.jpg

    Sudah berapa lama terakhir kali gw resmi berganti hendphone? Mungkin dari tahun 2006 waktu itu gw membeli Nokia 9300 yang »»

    My Comment About Nokia N900 – Maemo 5 based Smartphone from Nokia
  • Making PDF Thumbnail From PHP Using Imagemagick and Ghostscript

    http://neo.rizkhey.net/wp-content/uploads/2010/07/iluslator.png

    ImageMagick mungkin sebuah pengalaman baru buat gw, cukup menarik karena dia bisa digunakan untuk banyak hal yang tidak bisa dilakukan »»

    Making PDF Thumbnail From PHP Using Imagemagick and Ghostscript
  • Installing Imagemagick extension on Windows(Using XAMPP)

    http://neo.rizkhey.net/wp-content/uploads/2010/06/imagemagick-435x449.jpg

    Image Magick adalah sebuah program 3rd party yang tersedia crossplatform untuk Windows dan juga untuk Linux. Imagemagick itu apa? simpelnya »»

    Installing Imagemagick extension on Windows(Using XAMPP)
  • dnt-hw-deepblue WP Theme Download

    http://neo.rizkhey.net/wp-content/uploads/2010/04/Capture-450x379.jpg

    Beberapa hari terakhir banyak yang mampir dan meninggalkan pesan via YM ke gw menanyakan apakah theme yang gw pakai ini »»

    dnt-hw-deepblue WP Theme Download



Tag Cloud






Yahoo! PingBox