1. Contoh Error :
Warning: mysql_fetch_array():
supplied argument is not
a valid MySQL result resource in
....
atau
Warning: mysql_num_rows(): supplied
argument is not
a valid MySQL result resource in ...
Penyebab :
Error di atas disebabkan ada query
SQL yang salah. Bisa jadi karena sintaks perintah query SQL nya salah, misalnya
kurang tanda petik untuk menyatakan string dll. Selain itu
bisa juga terjadi karena nama field dan tabel yang salah penulisannya.
Solusi :
Coba cek kembali statement query SQL
kamu. Pastikan tidak ada lagi kesalahan dalam penulisannya. Untuk proses
debugging query SQL (mengetahui letak kesalahannya), kamu bisa menambahkan
statement die(mysql_error()) pada perintah mysql_query() nya.
Contoh :
$query = ".....";
mysql_query($query) or
die(mysql_error());
.
.
atau silakan baca kembali teknik
debugging script php mysql.
2. Error :
Warning: session_start()
[function.session-start]:
Cannot send session
cookie - headers already sent by
(output started at ... )
in ... on line ...
atau
Warning: session_start()
[function.session-start]:
Cannot send session
cache limiter - headers already sent
(output started at ...)
in ... on line ...
Penyebab :
Error di atas biasanya
terjadi pada penggunaan session. Sewaktu memberikan perintah session_start(), terdapat
baris perintah di atasnya yang menampilkan string atau kode html ke browser.
Sebagai contoh,
perhatikan script berikut ini:
echo
"Hallo...";
session_start();
?>
atau
session_start();
?>
Bila Anda perhatikan
script di atas, maka terdapat string yang di-echo-kan atau terdapat kode html yang
diletakkan sebelum session_start(). Inilah yang menyebabkan error. Selain
contoh di atas, error juga bisa muncul dari script yang berbentuk seperti ini
include
"header.php";
session_start();
?>
Meskipun sebelum
session_start() tidak ada echo atau kode html, namun error akan tetap muncul
apabila isi dari script header.php terdapat echo atau kode html juga, misalnya
header.php
echo "hallo";
?>
Solusi :
Pastikan sebelum
perintah session_start() tidak terdapat perintah echo atau kode html apapun.
3. Error :
Warning: Cannot modify
header information – headers already sent by
(output started at ...)
in ...
Penyebab :
Peringatan di atas
biasanya muncul ketika kamu melakukan redirecting menggunakan perintah
header("Location:
...");
Seharusnya, sebelum
perintah header("Location: ...") tidak boleh ada string apapun yang
ditampilkan di browser, meskipun itu kode HTML (sama seperti penyebab error di
session_start() sebelumnya).
Contoh :
echo
"Hallo Apa kabar?
";
";
header("Location: test.php");
?>
Pada script di atas,
sebelum perintah header() terdapat string yang ditampilkan ke browser. Inilah
yang mengakibatkan muncul peringatan tsb. Lantas bagaimana dengan script
berikut ini ?
$a = 10;
if ($a < 0) echo
"Nilai A negatif";
else
header("Location: test.php");
?>
Kira-kira muncul Warning
nya ga ya? Jika kamu coba, maka tidak muncul Warning nya meskipun sebelum
header() terdapat string yang ditampilkan ke browser. Mengapa demikian? ya..
meskipun di situ terdapat perintah untuk menampilkan string ke browser, namun
perintah tersebut tidak pernah dijalankan karena nilai $a nya positif.
Solusi :
Pastikan sebelum
perintah header("Location: ...") tidak ada kode HTML atau perintah
echo apapun. Jika kamu mengincludekan suatu script di atas
header("Location: ...") pastikan dalam script yang diincludekan
tersebut tidak ada kode HTML atau echo.
4. Error:
Warning: mysql_connect()
[function.mysql-connect]:
Access denied for user
‘root’@'localhost’ (using password: YES) in ...
Penyebab :
Error di atas disebabkan
karena koneksi yang gagal ke MySQL. Penyebab gagalnya bisa jadi disebabkan nama
user atau password yang salah.
Solusi :
Pastikan username dan
password koneksi ke MySQL kamu sudah benar ketika menggunakan perintah koneksi
mysql_connect("namahost", "namauser",
"passworduser");
5. Error :
Parse error: syntax
error, unexpected T_STRING,
expecting T_OLD_FUNCTION
or T_FUNCTION or T_VAR or ‘}’ in ...
Penyebab :
Penyebab pastinya, saya
kurang mengetahuinya. Namun biasanya ini terjadi karena penggunaan versi PHP
yang rendah (versi di bawah PHP 5) untuk menjalankan script PHP yang
menggunakan OOP.
Solusi :
Coba upgrade versi PHP
kamu, atau gunakan PHP dengan versi yang lebih tinggi.
6. Error :
Parse error: syntax
error, unexpected T_ELSE in ...
Penyebab :
Error tersebut muncul
sebagai akibat penulisan sintaks IF … ELSE yang tidak sesuai aturan. Perhatikan
contoh penggunaan IF ELSE yang salah di bawah ini
$a = 5;
if ($a > 0) $status =
"A lebih besar dari 0"
else ($a < 0) $status
= "A lebih kecil dari 0"
else $status = "A
sama dengan 0"
?>
Contoh di atas terdapat
kesalahan yaitu setiap akhir statement tidak diberikan tanda titik koma (;),
dan pada bagian else ($a < 0) kurang IF, seharusnya
$a = 5;
if ($a > 0) $status =
"A lebih besar dari 0";
else if ($a < 0)
$status = "A lebih kecil dari 0";
else $status = "A
sama dengan 0";
?>
Solusi :
Pastikan struktur
statement yang kamu gunakan berbentuk seperti ini :
if (syarat1) statement1;
else if (syarat2)
statement2;
else if (syarat3)
statement3;
.
.
else statementX;
?>
atau
if (syarat1)
{
statement;
statement;
.
.
}
else if (syarat2)
{
statement;
statement;
.
.
}
.
.
else
{
statement;
statement;
.
.
}
?>
7. Error :
Fatal error: Call to
undefined function: ...
Penyebab :
Error tersebut
disebabkan karena nama function yang digunakan tidak ada atau tidak dikenal
oleh PHP. Jika function tersebut adalah built in function, misalnya str_split()
bisa jadi hal ini disebabkan pada versi PHP yang digunakan belum ada function
tersebut. Jika function tersebut adalah function buatan sendiri, bisa jadi anda
lupa menyisipkan ke dalam script atau meng-include-kannya.
Solusi :
Jika function yang tidak
dikenal adalah built in function, maka lakukan upgrade versi PHP yang lebih
tinggi. Sedangkan jika function yang tidak dikenal adalah buatan sendiri,
pastikan Anda sudah meng-includekan di dalam scriptnya sehingga bisa dikenal.
Contohnya:
function.php
function jumlah($a, $b)
{
return $a +
$b;
}
?>
script.php
include
"function.php";
echo jumlah(9, 10);
// akan menghasilkan 19
?>
atau
script.php
function jumlah($a, $b)
{
return $a +
$b;
}
echo jumlah(9, 10);
// akan menghasilkan 19
?>
8. Error :
Parse error: parse
error, unexpected $end
Penyebab :
Error di atas disebabkan
karena kurangnya tanda penutup kurung kurawal.
Contohnya:
if ($a > 1)
{
echo
"Nilai A lebih dari 1";
?>
atau
while ($a > 1)
{
.
.
.
?>
Selain itu, bisa pula
error tersebut disebabkan karena efek perbedaan penggunaan tanda pembuka PHP
if (syarat)
{
statement1;
statement2;
?>
statement3;
statement4;
}
?>
Perhatikan contoh script
di atas, bahwa pada blok statement IF oleh si programmer dipecah menjadi 2
blok, namun perhatikan bahwa untuk blok kedua, tanda pembukanya menggunakan
Solusi :
Pastikan tanda kurung
kurawal penutup tidak lupa menuliskannya. Jika ternyata kasus yang kamu hadapi
sama seperti contoh kasus terakhir (perbedaan tanda pembuka script PHP),
konsistenkan penulisan tanda pembukanya menggunakan
9. Error :
Parse error: syntax
error, unexpected T_STRING
Penyebab :
Error tersebut
disebabkan karena penggunaan tanda petik (double quote atau single quote) yang
tidak tepat untuk menyatakan suatu string. Sebuah string harus diapit oleh dua
buah tanda petik.
Sebagai contoh :
$a = "ini sebuah
string";
?>
atau
$a = 'ini sebuah
string';
?>
Namun... jika dalam
string tersebut terdapat tanda petik lagi, misalkan
$a = "ini sebuah
" string";
?>
atau
$a = 'ini sebuah '
string';
?>
maka akan terdapat error
di atas. Hal yang sama jika kamu menggunakan single quote (tanda petik
tunggal).
Solusi :
Pastikan di dalam sebuah
string, anda mengapitnya dengan hanya 2 buah tanda petik saja. Jika kamu
bermaksud menyisipkan tanda petik dalam sebuah string, gunakan tanda \"
atau \', contoh :
$a = "ini sebuah
\" string";
?>
atau
$a = 'ini sebuah \'
string';
?>
10. Error :
Notice: Undefined index:
...
atau
Notice: Undefined
variable: ...
Penyebab :
Sebenarnya itu bukan
error, namun sekedar peringatan saja bahwa ada variabel atau index array yang
belum terdefinisi sebelumnya. Di beberapa versi PHP peringatan tersebut muncul,
namun di versi yang lain tidak muncul.
Berikut ini contohnya:
if ($a > 0)
{
....
}
?>
Jika kita perhatikan
script di atas, variabel $a langsung diberikan statement pengecekan IF, padahal
nilai $a ini tidak ada sebelumnya. Nah... di beberapa versi PHP, akan muncul
peringatan
Notice: Undefined
variable: a
Namun, bila nilai $a ini
sudah didefinisikan sebelumnya misalnya
$a = 10;
if ($a > 0)
{
....
}
?>
maka peringatan di atas
tidak akan muncul lagi. Peringatan yang hampir sama juga bisa muncul untuk
contoh berikut ini
if ($_GET['test'] == 0)
{
....
}
?>
yang dikarenakan nilai
$_GET['test'] belum terdefinisi sebelumnya atau belum ada nilainya (belum ada
request GET untuk parameter 'test').
Solusi :
Sebenarnya peringatan di
atas bisa saja diabaikan karena tidak berpengaruh pada kinerja script atau
proses yang terjadi di dalamnya. Namun, jika kamu ingin menghilangkan
peringatan tersebut caranya adalah dengan memodifikasi parameter
error_reporting =
...
pada file konfigurasi
php.ini
Tambahkanlah nilai
"& ~E_NOTICE" pada nilai parameternya, contoh:
error_reporting =
E_ALL & ~E_NOTICE
Maksud dari parameter di
atas adalah, PHP akan menampilkan bunyi error kecuali NOTICE. Jika sudah,
silakan merestart Apache nya.
11. Error :
Fatal error: Maximum
execution time of ... seconds exceeded in ...
Penyebab :
Error di atas disebabkan
karena lama eksekusi sebuah script PHP telah mencapai batas maksimumnya. Jika
kamu menggunakan AppServ atau XAMPP, default maximum execution time nya diset
30 detik. Jika lama eksekusi script yang kamu buat melebihi 30 detik, maka akan
muncul error di atas.
Solusi :
kamu dapat meningkatkan
atau menambah max execution time pada file php.ini, dengan cara carilah
parameter
max_execution_time = ...
Tambahlah nilainya,
misalnya menjadi 9999 detik, sehingga nilai parameternya menjadi
max_execution_time =
9999
Selanjutnya, simpan
kembali php.ini nya, lalu restart Apachenya.
Kalau perlu, lakukan
analisis algoritma pada script kamu apabila dirasa tidak efisien sehingga
mengakibatkan running time yang lama.
12. Error :
Bukan Error sih, tapi
kegagalan dalam proses upload file ketika kamu membuat script upload file.
Penyebab :
Kegagalan dalam proses
upload file itu disebabkan oleh ukuran file yang terlalu besar melebihi batas
maksimum yang diperbolehkan oleh PHP sesuai di file php.ini.
Solusi :
kamu dapat mengubah
batas maksimum file size untuk upload ini dengan mengubah parameter
upload_max_filesize =
...
dan
post_max_size = ...
pada file php.ini
Berikut ini contoh
pengubahan batas maksimum upload file hingga 80 Mb.
upload_max_filesize =
80M
dan
post_max_size = 80M
Jika sudah melakukan
pengubahan, lakukan restart Apache nya. Dan jangan lupa pula untuk menambah
komponen input
pada form upload nya.
Solusi di atas hanya
akan bisa menyelesaikan permasalahan upload jika file diupload ke folder atau
direktori tertentu yang ada di server. Namun, jika file diupload ke database
server, seperti pada artikel lain yang pernah dibahas, maka solusi di atas
tidak menyelesaikan masalah karena adanya batasan limit file size pada tipe
data yang memungkinkan untuk menyimpan data file, misalnya tipe data blob,
medium blob, atau long blob.