Banyak rekan-rekan saya maupun pengunjung setia blog ini yang selalu berkeluh kesah, mengapa kok script PHP yang diintegrasikan dengan MySQL sering gagal. Kadang muncul error yang entah apa maksudnya, atau kadang gak muncul error tapi malah blank alias tidak keluar apa-apa dari hasil querynya.
Nah… berikut ini, saya akan coba paparkan tips bagaimana teknik melacak kesalahan atau istilah kerennya dalam programming adalah ‘debugging’ pada script PHP yang diintegrasikan dengan MySQL.
Untuk mempermudah penjelasan, saya akan coba tuangkan ke dalam studi kasus. Studi kasusnya lagi-lagi terkait dengan data mahasiswa.
Misalkan kita memiliki tabel untuk menyimpan data mahasiswa seperti berikut ini:
1.
CREATE
TABLE
mhs (
2.
nim
varchar
(10),
3.
namamhs
varchar
(30),
4.
alamat text,
5.
sex
varchar
(10),
6.
PRIMARY
KEY
(nim)
7.
)
Selanjutnya misalkan data yang tersimpan dalam tabel di atas adalah seperti di bawah ini
1.
INSERT
INTO
mhs
VALUES
(
'M0197001'
,
'ROSIHAN ARI YUANA'
,
'COLOMADU'
,
'L'
);
2.
INSERT
INTO
mhs
VALUES
(
'M0197002'
,
'DWI AMALIA FITRIANI'
,
'KUDUS'
,
'P'
);
3.
INSERT
INTO
mhs
VALUES
(
'M0197003'
,
'FAZA FAUZAN KH.'
,
'COLOMADU'
,
'L'
);
4.
INSERT
INTO
mhs
VALUES
(
'M0197004'
,
'NADA HASANAH'
,
'COLOMADU'
,
'P'
);
5.
INSERT
INTO
mhs
VALUES
(
'M0197005'
,
'MUH. AHSANI TAQWIM'
,
'COLOMADU'
,
'L'
);
01.
<?php
02.
03.
// koneksi ke mysql
04.
mysql_connect(
"dbhost"
,
"dbuser"
,
"dbpass"
);
05.
mysql_select_db(
"dbname"
);
06.
07.
// query SQL untuk menampilkan semua data mhs
08.
$query
=
"SELECT * FROM mahasiswa"
;
09.
$hasil
= mysql_query(
$query
);
10.
11.
// menampilkan hasil query ke dalam bentuk tabel
12.
echo
"<table border='1'>"
;
13.
echo
"<tr><td>NIM</td><td>Nama Mhs</td><td>Alamat</td><td>Jenis Kelamin</td></tr>"
;
14.
while
(
$data
= mysql_fetch_array(
$hasil
))
15.
{
16.
echo
"<tr><td>"
.
$data
[
'Nim'
].
"</td><td>"
.
$data
[
'namamhs'
].
"</td><td>"
.
$data
[
'alamat'
].
"</td><td>"
.
$data
[
'sex'
].
"</td></tr>"
;
17.
}
18.
echo
"</table>"
;
19.
?>
Warning: mysql_connect() [function.mysql-connect]: Access denied for user ‘root’@'localhost’ (using password: YES) in F:\mhs.php on line 4
Maksud dari error di atas adalah koneksi ke mysql dengan menggunakan user dengan nama ‘root’ gagal dilakukan. Nah.. untuk mengatasinya: coba cek apakah nama usernya benar, atau mungkin passwordnya yang salah.
OK… andaikan setelah username dan password untuk koneksinya diperbaiki dengan benar. Selanjutnya script bisa dijalankan kembali. Setelah dijalankan mungkin muncul error seperti di bawah ini
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in F:\mhs.php on line 14
Error tersebut muncul dikarenakan penulisan query SQL yang salah atau tidak memenenuhi aturan yang benar. Pada script di atas, query SQL yang digunakan adalah:
1.
SELECT
*
FROM
mahasiswa
Namun.. bagaimana bila query SQL nya panjang dan kita sudah yakin bahwa query yang kita buat ini adalah betul? He..3x jangan sok yakin dulu. Komputer tidak akan pernah berkhianat pada programmer. Memang.. query yang dijalankan dalam script PHP tidak akan terlihat kesalahannya. Untuk melihat kesalahan querynya, satu-satunya cara adalah menjalankan query tersebut ke dalam phpMyAdmin atau Navicat.
Trus.. langkahnya bagaimana? Langkahnya adalah tampilkan query SQL yang akan dijalankan ke dalam halaman web, dengan cara meng-echo-kan querynya (perhatikan perintah
echo $query;
pada baris ke-9 berikut ini)01.
<?php
02.
03.
// koneksi ke mysql
04.
mysql_connect(
"dbhost"
,
"dbuser"
,
"dbpass"
);
05.
mysql_select_db(
"dbname"
);
06.
07.
// query SQL untuk menampilkan semua data mhs
08.
$query
=
"SELECT * FROM mahasiswa"
;
09.
echo
$query
;
10.
$hasil
= mysql_query(
$query
);
11.
12.
// menampilkan hasil query ke dalam bentuk tabel
13.
echo
"<table border='1'>"
;
14.
echo
"<tr><td>NIM</td><td>Nama Mhs</td><td>Alamat</td><td>Jenis Kelamin</td></tr>"
;
15.
while
(
$data
= mysql_fetch_array(
$hasil
))
16.
{
17.
echo
"<tr><td>"
.
$data
[
'Nim'
].
"</td><td>"
.
$data
[
'namamhs'
].
"</td><td>"
.
$data
[
'alamat'
].
"</td><td>"
.
$data
[
'sex'
].
"</td></tr>"
;
18.
}
19.
echo
"</table>"
;
20.
?>
OK… setelah diperbaiki querynya, maka akan diperoleh script berikut ini
01.
<?php
02.
03.
// koneksi ke mysql
04.
mysql_connect(
"dbhost"
,
"dbuser"
,
"dbpass"
);
05.
mysql_select_db(
"dbname"
);
06.
07.
// query SQL untuk menampilkan semua data mhs
08.
$query
=
"SELECT * FROM mhs"
;
09.
$hasil
= mysql_query(
$query
);
10.
11.
// menampilkan hasil query ke dalam bentuk tabel
12.
echo
"<table border='1'>"
;
13.
echo
"<tr><td>NIM</td><td>Nama Mhs</td><td>Alamat</td><td>Jenis Kelamin</td></tr>"
;
14.
while
(
$data
= mysql_fetch_array(
$hasil
))
15.
{
16.
echo
"<tr><td>"
.
$data
[
'Nim'
].
"</td><td>"
.
$data
[
'namamhs'
].
"</td><td>"
.
$data
[
'alamat'
].
"</td><td>"
.
$data
[
'sex'
].
"</td></tr>"
;
17.
}
18.
echo
"</table>"
;
19.
?>
But…. lho kok data NIM nya tidak muncul? Waduh… kenapa ini, padahal data yang lain muncul? Nah… ini disebabkan karena penulisan array yang salah terkait dengan nama fieldnya.
Perhatikan script di atas. Untuk menampilkan data pada field ‘nim’, kita menggunakan perintah
$data['Nim']
(menggunakan huruf N besar). Padahal pada tabel yang kita buat di atas menggunakan huruf N kecil (‘nim’). Hal inilah yang menyebabkan permasalahannya.Apabila Anda menggunakan
mysql_fetch_array()
untuk membaca record hasil query, maka pastikan nama elemen arraynya sama dengan nama fieldnya, baik dalam penulisan nya maupun besar kecilnya huruf harus sama.Setelah diperbaiki, maka beres dah… semua data yang tampil sesuai harapan.
OK.. mudah-mudahan artikel ini berguna bagi Anda semuanya yang sering dipusingkan dengan kesalahan dalam script PHP + MySQL nya. Harapan saya.. mudah-mudahan pula, Anda bisa mencari kesalahan dalam script Anda sendiri dan memperbaikinya tanpa meminta bantuan orang lain lagi
Source : http://blog.rosihanari.net