Tutorial PHP MySQL Part 15: Cara Menampilkan Pesan Kesalahan (Error) mysqli Extension

Jika dalam 2 tutorial sebelumnya kita membahas tentang cara menampilkan data MySQL menggunakan procedural style mysqli dan object style mysqli, dalam tutorial PHP MySQL kali ini kita akan mempelajari fungsi dan property yang bisa digunakan untuk menampilkan pesan kesalahan (error) di dalam mysqli.


Pesan kesalahan atau error yang dimaksud dalam tutorial kali ini adalah pesan error dari MySQL yang bisa ditampilkan apabila terjadi kesalahan koneksi atau kesalahan penulisan query MySQL. Pesan error dari PHP kadang tidak mencukupi, atau tidak bisa ditampilkan langsung kepada pengguna.

Karena itu, kita perlu sebuah cara untuk mengetahui apa yang terjadi. Misalkan apakah MySQL Server sudah berjalan, atau apakah kita salah menuliskan password user, database belum ada, salah penulisan query, dll. Dalam tutorial ini kita akan membahasnya dengan lebih dalam.

Karena mysqli memiliki 2 cara penulisan, yakni procedural style dan object style, saya akan membahas keduanya secara terpisah.

Cara Menampilkan Pesan Kesalahan (Error) Procedural Style mysqli

Untuk menampilkan pesan kesalahan dalam procedural style mysqli, kita akan menggunakan fungsi-fungsi. Beberapa diantaranya adalah fungsi mysqli_connect_errno(), mysqli_connect_ error (), mysqli_errno(), dan mysqli_error(). Agar mudah dipahami, kita akan langsung membahasnya menggunakan contoh kode program.

Pertama kali, saya akan mencoba membuat contoh kode program untuk menampilkan kesalahan pada saat proses koneksi dengan MySQL Server. Berikut adalah kode program PHPnya:

<?php
// buat koneksi dengan MySQL, gunakan database: universitas
$link = mysqli_connect('localhost', 'root', '', 'universitas');
  
// cek koneksi
if (!$link) {
   die('Koneksi Error : '.mysqli_connect_errno() 
   .' - '.mysqli_connect_error());
}
  
// koneksi berhasil
echo 'Koneksi Berhasil : '.mysqli_get_host_info($link)."<br />";
  
// tutup koneksi
mysqli_close($link);
?>

Pada kode program diatas, setelah proses koneksi dengan fungsi mysqli_connect(), saya memeriksa hasil koneksi dengan kondisi if(!$link). Fungsi mysqli_connect() akan mengembalikan link koneksi apabila koneksi ke MySQL sukses dilakukan. Tetapi jika koneksi gagal, fungsi ini akan mengembalikan nilai FALSE. Nilai kembalian inilah yang bisa kita manfaatkan untuk memeriksa apakah koneksi berhasil atau gagal. Karena kondisi IF baru akan berjalan jika kondisi bernilai TRUE, maka saya menambahkan tanda ! untuk membalik nilai FALSE menjadi TRUE. Kondisi if(!$link) baru akan dieksekusi ketika fungsi mysqli_connect() mengalami kegagalan.

Jika kondisi if(!link) menjadi TRUE (terdapat error), maka fungsi die() akan menghentikan proses PHP yang sedang berjalan. Selanjutnya, saya menampilkan pesan kesalahan menggunakan fungsi mysqli_connect_errno() dan mysqli_connect_ error(). Fungsi mysqli_connect_errno() akan menampilkan nomor kode error, sedangkan fungsi mysqli_connect_error() akan menampilkan pesan error.)

Sebagai contoh, jika saya sengaja mengubah username menjadi "teman_root" (yang memang tidak ada di MySQL), maka kita bisa melihat error yang terjadi:

Koneksi Error : 1044 
- Access denied for user ''@'localhost' to database 'universitas'.

Atau jika database saya ganti jadi "universitas_tetangga":

Koneksi Error : 1049 - Unknown database 'universitas_tetangga'.

Pesan error yang dihasilkan ini selanjutnya bisa dikirim ke user agar bisa memperbaiki kesalahan tersebut.

Apabila koneksi berhasil, fungsi mysqli_get_host_info() bisa digunakan untuk menampilkan keterangan mengenai jenis koneksi apa yang saat ini diakses, apakah dari localhost atau alamat IP.

Jika kita menggunakan fungsi mysqli_connect('localhost', 'root', ", 'universitas'), maka hasil pemanggilan fungsi mysqli_get_host_info() adalah:

Koneksi berhasil : localhost via TCP/IP

Jika saya mengubahnya menjadi mysqli_connect('127.0.0.1', 'root', ", 'universitas'), hasilnya menjadi:

Koneksi berhasil : 127.0.0.1 via TCP/IP

Selanjutnya, bagaimana cara menampilkan pesan error yang terjadi pada saat query di jalankan? Kita bisa menggunakan fungsi mysqli_errno() dan mysqli_error(). Berikut adalah contoh cara penggunaannya:

<?php
// buat koneksi dengan MySQL, gunakan database: universitas
$link = mysqli_connect('localhost', 'root', '', 'universitas');
 
// cek koneksi
if (!$link) {
   die('Koneksi Error : '.mysqli_connect_errno().
   ' - '.mysqli_connect_error());
}

// koneksi berhasil
echo 'Koneksi Berhasil : '.mysqli_get_host_info($link)."<br />";
 
// jalankan query
$result = mysqli_query($link,"SELECT * FROM mahasiswa_ilkom");
 
// cek hasil query
if (!$result) {
   die('Query Error : '.mysqli_errno($link). 
   ' - '.mysqli_error($link));
}
 
// tampilkan query  
while ($row=mysqli_fetch_row($result)) {
    echo "$row[0] $row[1] $row[2] $row[3] $row[4]";
    echo "<br />";
}
 
// tutup koneksi
mysqli_close($link);
?>

Dalam kode program diatas saya melakukan pengecekan apakah query berjalan sukses atau tidak dengan kondisi if (!$result). Jika di dalam query terdapat kesalahan, maka fungsi die() akan dijalankan. Sama seperti fungsi mysqli_connect(), fungsi mysqli_query() juga akan mengembalikan nilai FALSE jika query gagal dijalankan.

Fungsi mysqli_errno() digunakan untuk menampilkan nomor kode error, dan fungsi mysqli_error() digunakan untuk menampilkan pesan error yang terjadi.

Sebagai contoh, jika saya mengganti query menjadi SELECT * FROM mahasiswa_mipa, maka hasilnya adalah sebagai berikut:

Query Error : 1146 - Table 'universitas.mahasiswa_mipa' doesn't exist

Dimana dalam database universitas yang saya gunakan, memang tidak terdapat tabel mahasiswa_mipa. Pesan kesalahan ini sangat berguna terutama jika kita membuat program dimana user bisa menginput query sendiri.

Dalam 2 contoh kode program diatas, saya menampilkan pesan kesalahan menggunakan mysqli dengan procedural style. Bagaimana dengan object style mysqli? Mari kita lihat cara penulisannya.


Cara Menampilkan Pesan Kesalahan (Error) Object Style mysqli

Untuk menampilkan pesan kesalahan dengan menggunakan object style mysqli, kita tidak lagi menggunakan fungsi, tetapi dengan memeriksa property error dari objek mysqli. Property yang digunakan untuk menampilkan pesan kesalahan ini memiliki nama yang mirip dengan fungsi yang digunakan pada procedural style mysqli.

Berikut adalah contoh kode program untuk menampilkan kesalahan MySQL menggunakan mysqli dengan object style:

<?php
// buat koneksi dengan MySQL, gunakan database: universitas
$mysqli = new mysqli("localhost", "root", "","universitas");

// cek koneksi
if ($mysqli->connect_errno) {
   die('Koneksi Error: '.$mysqli->connect_errno. 
   ' - '. $mysqli->connect_error);
}

// koneksi berhasil
echo 'Koneksi Berhasil : '.$mysqli->host_info."<br />";

// jalankan query
$result = $mysqli->query("SELECT * FROM mahasiswa_ilkom");

// cek hasil query
if ($mysqli->errno) {
   die('Query Error : '.$mysqli->errno.' - '.$mysqli->error);
}
// tampilkan query
while ($row= $result->fetch_row()) {
   echo "$row[0] $row[1] $row[2] $row[3] $row[4]";  
   echo "<br />";
}
 
// tutup koneksi
$mysqli->close();
?>

Perhatikan bahwa untuk mengecek apakah suatu koneksi dan proses query berhasil atau tidak, kita bisa mengujinya dengan mengecek "isi" dari property $mysqli->connect_errno dan $mysqli->errno. Kedua property ini tidak akan berisi apa-apa jika tidak ada kesalahan, dan baru akan berisi nilai jika terdapat error pada koneksi MySQL atau query MySQL.

Dengan kata lain, untuk memeriksa apakah pada saat koneksi MySQL terjadi kesalahan, kita bisa mengujinya dengan kondisi if ($mysqli->connect_errno). Sedangkan untuk mengecek query, bisa menggunakan if ($mysqli->errno).

Anda bisa menguji kode diatas dengan melakukan "kesalahan", dan melihat apakah kode program diatas bisa menangkap error yang terjadi.

Cara penanganan error dalam contoh object style mysqli diatas sebenarnya belum murni "objek". Menggunakan kondisi IF dan fungsi die() untuk menangani kesalahan merupakan "cara procedural style". Di dalam OOP, kita sebaiknya menggunakan kondisi TRY…CATCH untuk penanganan kesalahan (kita akan melihat contohnya saat membahas tentang PDO dalam tutorial mengenai PDO PHP).

Dalam tutorial ini saya tidak menggunakannya agar contoh kita menjadi lebih sederhana.


Dalam tutorial belajar PHP MySQL kali ini kita telah membahas cara menangani dan menampilkan pesan kesalahan jika terjadi error pada saat koneksi MySQL maupun pada saat query dijalankan. Pesan error ini akan berguna jika kita membuat program dimana user bisa menginput query sendiri. Sehingga jika terjadi salah penulisan query, kita bisa menampilkan pesan yang sesuai.

Dalam tutorial PHP MySQL berikutnya kita akan membahas tentang Pengertian dan Cara Penggunaan Prepared Statements di dalam mysqli.

7 Comments

  1. RF
    12 Apr 16
  2. Anonymous
    24 Dec 16
  3. Malik
    22 Feb 17
    • Andre
      23 Feb 17
  4. Firdaus
    16 Nov 22
    • Andre
      17 Nov 22

Add Comment