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.
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.
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.
gan apa maksud dan penjelasan dari pengguna setiap titik pada data di atas
contohnya " .$mysqli->errno. " dan " .$mysqli->error "
Ini gan linknya: https://www.duniailkom.com/pengertian-dan-jenis-jenis-operator-string-dalam-php/
Disitu akan dijelaskan secara lengkap.
Tks bro,,
mas, kenapa ya kalo saya membuat usernya salah, yg keluar malah ini
Warning: mysqli_connect(): (HY000/1044): Access denied for user ''@'localhost' to database 'universitas' in D:\xampp\htdocs\belajar\mysqli.php on line 13
Koneksi Error : 1044 – Access denied for user ''@'localhost' to database 'universitas'
sedangkan fungsi die() nya tidak dijalankan.
Fungsi die() nya sudah berjalan kok, test saja dengan membuat 1 atau 2 perintah echo setelah die(), pasti tidak akan tampil…
Pesan warning tersebut sudah bawaan PHP yang di set untuk menampilkan seluruh error. Di website yang sebenarnya, pesan error ini bisa di setting agar tidak tampil, sehingga yang berjalan hanya string yang berasal dari fungsi die().
Mau tanya bang, apakah sekarang ini (terutama untuk PHP 8.1) penggunaan myslq extension dan mysqli extension sudah deprecated atau sudah dihapus dari PHP 8.1?
Sepanjang tutorial PHP MySQL yang saya ikuti hingga artikel ini mysql extension sudah tidak bisa digunakan lagi, tetapi mysqli extension masih bisa. Namun untuk beberapa fungsi menampilkan pesan error seperti di artikel ini sudah tidak bisa lagi, melainkan pesan error panjang seperti biasanya.
Mungkin sekarang ini hanya koneksi menggunakan PDO saja yg masih bisa ya? Kebetulan saya belum mencoba yg PDO.
Mohon penjelasannya bang, terima kasih.
Di PHP 8 mysql extension memang sudah dihapus sepenuhnya (tidak bisa dipakai lagi). Tapi mysqli extension masih tetap didukung, termasuk PDO.
Tutorial ini memang sudah saya jadwalkan untuk di update, masih menunggu waktu kosong dulu…