Thursday, 2 August 2012






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:

CREATE TABLE mhs (
  nim varchar(10),
  namamhs varchar(30),
  alamat text,
  sex varchar(10),
  PRIMARY KEY  (nim)
)

Perhatikan penulisan nama tabel dan field-fieldnya. Di sini saya sengaja menggunakan huruf kecil semua dalam menuliskan nama tabel maupun nama fieldnya. Ingat baik-baik ya ! :-)
Selanjutnya misalkan data yang tersimpan dalam tabel di atas adalah seperti di bawah ini

INSERT INTO mhs VALUES ('M0197001', 'ROSIHAN ARI YUANA', 'COLOMADU', 'L');
INSERT INTO mhs VALUES ('M0197002', 'DWI AMALIA FITRIANI', 'KUDUS', 'P');
INSERT INTO mhs VALUES ('M0197003', 'FAZA FAUZAN KH.', 'COLOMADU', 'L');
INSERT INTO mhs VALUES ('M0197004', 'NADA HASANAH', 'COLOMADU', 'P');
INSERT INTO mhs VALUES ('M0197005', 'MUH. AHSANI TAQWIM', 'COLOMADU', 'L');
 
Nah… selanjutnya misalkan kita punya script PHP untuk menampilkan semua data mahasiswa di atas ke dalam halaman web. 

<?php

// koneksi ke mysql
mysql_connect("dbhost", "dbuser", "dbpass");
mysql_select_db("dbname");

// query SQL untuk menampilkan semua data mhs
$query = "SELECT * FROM mahasiswa";
$hasil = mysql_query($query);

// menampilkan hasil query ke dalam bentuk tabel
echo "<table border='1'>";
echo "<tr><td>NIM</td><td>Nama Mhs</td><td>Alamat</td><td>Jenis Kelamin</td></tr>";
while ($data = mysql_fetch_array($hasil))
{
  echo "<tr><td>".$data['Nim']."</td><td>".$data['namamhs']."</td><td>".$data['alamat']."</td><td>".$data['sex']."</td></tr>";
}
echo "</table>";
?>
 
Setelah script di atas Anda jalankan, mungkin Anda akan menjumpai error berbunyi seperti ini:
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:

SELECT * FROM mahasiswa
 
Dalam kasus ini tentu kita langsung bisa menemukan kesalahan dari query SQL tersebut, yaitu penulisan nama tabel yang salah. Nama tabel seharusnya ‘mhs’ (dalam query boleh ditulis dalam huruf besar semua, atau campuran besar kecil).
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)

<?php

// koneksi ke mysql
mysql_connect("dbhost", "dbuser", "dbpass");
mysql_select_db("dbname");

// query SQL untuk menampilkan semua data mhs
$query = "SELECT * FROM mahasiswa";
echo $query;
$hasil = mysql_query($query);

// menampilkan hasil query ke dalam bentuk tabel
echo "<table border='1'>";
echo "<tr><td>NIM</td><td>Nama Mhs</td><td>Alamat</td><td>Jenis Kelamin</td></tr>";
while ($data = mysql_fetch_array($hasil))
{
  echo "<tr><td>".$data['Nim']."</td><td>".$data['namamhs']."</td><td>".$data['alamat']."</td><td>".$data['sex']."</td></tr>";
}
echo "</table>";
?>
 
Nah… bila script di atas dijalankan, maka querynya akan ditampilkan ke browser. Trus.. copy lah query yang tampil tersebut, lalu jalankan di phpMyAdmin. Bila query tersebut salah, maka akan muncul pesan kesalahan. Kemudian barulah Anda perbaiki querynya.
OK… setelah diperbaiki querynya, maka akan diperoleh script berikut ini

<?php

// koneksi ke mysql
mysql_connect("dbhost", "dbuser", "dbpass");
mysql_select_db("dbname");

// query SQL untuk menampilkan semua data mhs
$query = "SELECT * FROM mhs";
$hasil = mysql_query($query);

// menampilkan hasil query ke dalam bentuk tabel
echo "<table border='1'>";
echo "<tr><td>NIM</td><td>Nama Mhs</td><td>Alamat</td><td>Jenis Kelamin</td></tr>";
while ($data = mysql_fetch_array($hasil))
{
  echo "<tr><td>".$data['Nim']."</td><td>".$data['namamhs']."</td><td>".$data['alamat']."</td><td>".$data['sex']."</td></tr>";
}
echo "</table>";
?>
 
Setelah diperbaiki dan dijalankan kembali scriptnya, maka error tidak akan lagi muncul, dan muncul beberapa data sebagaimana tampak pada gambar di bawah ini
Photobucket
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 :-)
 

 

 

 

0 comments:

Post a Comment