Mengakses database MySQL melalui PHP
by Fajran Rusadi
1. Publication Information Copyright ©2003 by Fajran Iman Rusadi All rights reserved. 2. Abstraksi Pada tutorial ini kita akan mencoba membuat koneksi dengan MySQL, melakukan query dan memproses hasilnya, dan mengakhiri koneksi. 3. Membuat koneksi dengan MySQL Sebelum MySQL bisa diakses, kita harus membuat koneksi ke database terlebih dahulu. Untuk melakukannya, kita bisa memakai fungsi mysql_connect yang tersedia pada PHP Fungsi mysql_connect memiliki parameter sebagai berikut:
mysql_connect ( [string server [, string username [, string password [, bool new_link]]]
Parameter: • Parameter pertama adalah alamat server database MySQL •
Parameter kedua adalah username yang digunakan untuk mengakses database
•
Parameter ketiga adalah password dari username yang dipakai
•
Parameter keempat adalah penanda apakah fungsi tersebut selalu membuka koneksi baru atau tidak
Pada artikel kali ini, kita hanya menggunakan tiga parameter pertama saja. Fungsi ini sendiri akan menghasilkan sebuah penanda koneksi jika koneksi ke database berhasil dilakukan, dan akan menghasilkan nilai FALSE jika koneksi gagal dilakukan.
Page 1 Copyright © 2004 Fajran Iman Rusadi All rights reserved.
Mengakses database MySQL melalui PHP
Misalnya kita mempunyai database MySQL di 192.168.1.2 dengan username Teksound dan password DelapanBelas $link = mysql_connect("192.168.1.2", "Teksound", "DelapanBelas");
Jika koneksi tidak berhasil dilakukan, akan muncul sebuah pesan kesalahan yang akan. Agar pesan kesalahan tersebut tidak dimunculkan, bisa ditambahkan tanda @ di depan fungsi. $link = @mysql_connect("192.168.1.2", "Teksound", "DelapanBelas");
Agar bisa dilakukan tindakan yang berbeda terhadap hasil koneksi yang berbeda juga (berhasil atau gagal), contoh statement di atas bisa dimasukkan dalam pencabangan if (atau yang lainnya). if ($link = @mysql_connect("192.168.1.2", "Teksound", "DelapanBelas")) { ...jika koneksi berhasil... } else { ...jika koneksi gagal... }
Sampai saat ini, kita sudah bisa membuat koneksi dengan database MySQL 4. Melakukan query Setelah koneksi dibuat, kita sudah bisa melakukan query untuk mengakses atau mengambil data dari database. Untuk mengirimkan query (yang menggunakan SQL) ke database, bisa digunakan fungsi mysql_query. Fungsi ini memiliki dua parameter, yang pertama adalah query yang ingin dilakukan, dan yang kedua adalah penanda koneksi (hasil dari mysql_connect). Tetapi parameter kedua ini merupakan sesuatu yang tidak harus dimasukkan. Pengaksesan database akan menggunakan koneksi yang telah dilakukan sebelumnya. Fungsi mysql_query ini akan menghasilkan nilai FALSE jika terjadi kegagalan dalam melakukan query (seperti SQL yang salah atau karena tidak adanya izin untuk mengakses sebuah tabel). Sedangkan jika mysql_query berhasil dilakukan, fungsi ini akan menghasilkan nilai sesuai query yang dilakukan. Untuk SQL statement SELECT, SHOW, EXPLAIN atau DESCRIBE, fungsi ini akan menghasilkan nilai keluaran dari query yang dilakukan (seperti tabel data hasil query). Dan untuk SQL statement lainnya, fungsi ini akan menghasilkan nilai TRUE. Contoh penggunaan: mysql_query("CREATE DATABASE Teksound");
Page 2 Copyright © 2004 Fajran Iman Rusadi All rights reserved.
Mengakses database MySQL melalui PHP
$hasil = mysql_query("SELECT * FROM Teksound.database");
Agar nama database tidak harus selalu dimasukkan saat mengakses tabel, kita bisa memilih dulu database mana yang akan digunakan. Untuk melakukannya dapat digunakan fungsi mysql_select_db dengan parameter nama databasenya. Fungsi ini akan menghasilkan nilai TRUE jika berhasil dan FALSE jika gagal. Contoh: mysql_select_db("Teksound"); $hasil = mysql_query("SELECT * FROM database");
Pada contoh di atas, hasil query akan ditampung di dalam variabel $hasil. Bagaimana cara membacanya? Silahkan baca bagian selanjutnya karena pada bagian ini kita hanya akan mencoba melakukan query saja. 5. Memproses Query Setelah hasil query di dapat, sudah saatnya kita memanfaatkan hasil tersebut. Ada beberapa fungsi yang disediakan oleh PHP untuk membaca hasil query, tapi dalam artikel ini kita hanya akan membahas penggunaan mysql_num_rows, mysql_affected_rows dan mysql_fetch_array (dan mysql_fetch_rows, mysql_fetch_assoc). Fungsi mysql_num_rows digunakan untuk mendapatkan banyaknya record (sebaris data) yang dihasilkan. Fungsi ini hanya memiliki sebuah parameter yaitu hasil query. Fungsi ini akan menampilkan banyak baris pada tabel hasil query, sehingga fungsi ini akan menghasilkan pesan kesalahan jika parameter yang diberikan bukan merupakan hasil query yang berhasil dilakukan. Fungsi mysql_affected_rows digunakan untuk mendapatkan banyaknya record yang "terkena dampak" dari query yang dilakukan sebelumnya. Query yang dilakukan bisa berupa INSERT, UPDATE atau DELETE. Fungsi mysql_fetch_array, mysql_fetch_rows, dan mysql_fetch_assoc merupakan fungsi untuk mengambil sebaris record dari hasil query dan menyimpannya dalam sebuah variabel array. Yang membedakan dari ketiga fungsi tersebut adalah pemberian index data (untuk setiap kolom/field yang ada) dalam array. Fungsi mysql_fetch_rows akan memberikan index berupa angka, fungsi mysql_fetch_assoc akan memberikan index berupa nama field sesuai data yang bersangkutan, sedangkan fungsi mysql_fetch_array akan memberikan index berupa angka dan nama field. Ketiga fungsi tadi akan menghasilkan sebuah variabel array jika masih ada record yang tersedia, dan akan menghasilkan nilai FALSE jika tidak ada lagi record yang tersisa.
Page 3 Copyright © 2004 Fajran Iman Rusadi All rights reserved.
Mengakses database MySQL melalui PHP
Misalnya kita mempunyai tabel sebagai berikut: Angkatan
Ketua
Anggota
18
Danang
60
19
Vicky
49
Dengan fungsi mysql_fetch_rows akan dihasilkan sebuah variabel array: $hasil[0] = 18, $hasil[1] = Danang, dan $hasil[2] = 60 Dengan fungsi mysql_fetch_assoc akan dihasilkan sebuah variabel array: $hasil["Angkatan"] = 18, $hasil["Ketua"] = Danang, dan $hasil["Anggota"] = 60 Sedangkan fungsi mysql_fetch_array akan menghasilkan sebuah variabel array: $hasil[0] = 18, $hasil["Angkatan"] = 18, $hasil[1] = Danang, $hasil["Ketua"] = Danang, $hasil[2] = 60, dan $hasil["Anggota"] = 60 Jika salah satu dari fungsi tadi dipanggil lagi, maka baris selanjutnya yang akan dikeluarkan. Pada artikel kali ini, kita hanya akan menggunakan salah satu dari ketiga fungsi tadi, yaitu mysql_fetch_array. Jika ingin membaca seluruh baris record, ada beberapa cara yang bisa dilakukan. Cara pertama adalah dengan mendapatkan banyaknya record lalu melakukan looping sebanyak itu untuk mengambil nilai setiap recordnya. Contoh: $banyakBaris = mysql_num_rows($hasil); for ($i=0;$i<$banyakBaris;$i++) { $barisData = mysql_fetch_array($hasil); ...hasil ditampilkan... }
Cara kedua adalah dengan mengambil nilai setiap recordnya sampai tidak ada lagi record yang tersisa. Contoh: while ($barisData = mysql_fetch_array($hasil)) { ...hasil ditampilkan... }
Page 4 Copyright © 2004 Fajran Iman Rusadi All rights reserved.
Mengakses database MySQL melalui PHP
Setelah variabel array yang berisi sebaris data didapatkan, selanjutnya kita perlu untuk memproses data-data yang ada. Untuk melakukannya, kita hanya perlu untuk menggunakan nilai-nilai yang ada di elemen array tadi. Contoh: while ($barisData = mysql_fetch_array($hasil)) { $angkatan = $hasil["Angkatan"]; $ketua = $hasil["Ketua"]; $anggota = $hasil["Anggota"]; }
Pada contoh di atas, untuk setiap looping nya, kita akan mendapatkan nilai untuk variabel $angkatan, $ketua dan $anggota yang didapatkan dari array $barisData. Sekarang hanya tinggal bagaimana cara kita untuk menampilkan data-data tersebut. Misalnya ingin ditampilkan dalam sebuah tabel HTML print("
"); print("Angkatan | Ketua | Banyak Anggota |
"); while ($barisData = mysql_fetch_array($hasil)) { $angkatan = $hasil["Angkatan"]; $ketua = $hasil["Ketua"]; $anggota = $hasil["Anggota"]; print(""); print("$angkatan | "); print("$ketua | "); print("$anggota | "); print("
"); } print("
");
6. Mengakhiri koneksi Setelah seluruh rangkaian query dilakukan, ada baiknya jika kita memutuskan koneksi ke database. Sebenarnya hal ini bukanlah sesuatu yang harus dilakukan, karena koneksi akan secara otomatis diputus setelah script selesai dijalankan. Untuk melakukannya, bisa digunakan fungsi mysql_close. Fungsi ini memiliki sebuah parameter, yaitu penanda koneksi yang kita dapatkan saat memulai koneksi tadi. Cara penggunaan: mysql_close($link);
Jika parameter pertama tidak dimasukkan, maka koneksi terakhir yang dilakukanlah yang
Page 5 Copyright © 2004 Fajran Iman Rusadi All rights reserved.
Mengakses database MySQL melalui PHP
akan diputus.
Page 6 Copyright © 2004 Fajran Iman Rusadi All rights reserved.