Table of Contents

Pertanyaan

Saya menjumpai satu atau lebih pesan kesalahan seperti ini saat menjalankan skrip PHP saya:

Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in ... on line N
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in ... on line N
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in ... on line N

dsb. Kenapa dan bagaimana menyelesaikannya?

Jawaban/solusi

Pesan ini terjadi karena mysql_query() di baris sebelum baris N gagal, tapi Anda tidak mengecek status keberhasilannya. Sehingga saat dicoba mysql_fetch_row() dsb gagal dan muncul pesan kesalahan di atas. Contoh:

$res = mysql_query("SELECT value FROM tblconf WHERE name='versi'"); $row = mysql_fetch_row($res);

Jika di baris pertama mysql_query() berhasil, maka tidak masalah, baris kedua pun akan memperoleh hasilnya. Tapi jika baris pertama gagal, maka $res akan bernilai false, dan saat dimasukkan ke mysql_fetch_row() akan muncul pesan kesalahan bahwa argumen yang dimasukkan bukanlah handle hasil query yang valid (karena nilainya false).

Query dapat gagal misalnya jika SQL-nya salah (syntax error) atau bisa juga terjadi perubahan di database, misalnya tabel tblconf dihapus atau direname, dsb, sehingga bisa saja sebuah skrip yang tadinya jalan dengan baik tiba-tiba suatu hari macet dengan pesan kesalahan di atas.

Untuk menampilkan pesan kesalahan yang lebih ramah/tepat, ada baiknya Anda selalu mengecek $res. Contoh:

$res = mysql_query("SELECT value FROM tblconf WHERE name='versi'") or die("Gagal mengambil versi!"); $row = mysql_fetch_row($res);