Setelah mempelajari cara membuat koneksi database MySQL dengan PDO, pada tutorial belajar PHP MySQL kali ini kita akan membahas cara menampilkan data MySQL menggunakan PDO (PHP Data Object).
Cara Menampilkan Data MySQL dengan PDO
Walaupun terkesan "rumit", menjalankan query dan menampilkan hasilnya menggunakan PDO PHP tidaklah sulit. Bahkan sangat mirip dengan mysqli. PHP juga menyediakan beragam cara untuk menampilkan hasil query MySQL dengan PDO.
Sama seperti mysql extension dan mysqli extension, untuk menjalankan dan menampilkan data dari MySQL dengan PDO, kita membutuhkan 3 langkah: buat koneksi, jalankan query, dan tampilkan hasil.
Agar lebih mudah dipahami, berikut adalah contoh kode program untuk menampilkan seluruh tabel mahasiswa_ilkom dengan menggunakan PDO:
<?php try {   // buat koneksi dengan database   $dbh = new PDO('mysql:host=localhost;dbname=universitas', "root", "");    // set error mode   $dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );    // jalankan query   $result = $dbh->query('SELECT * FROM mahasiswa_ilkom');    // tampilkan data   while($row = $result->fetch()) {     echo "$row[0] $row[1] $row[2] $row[3] $row[4]";        echo "<br />";   }   // hapus koneksi   $dbh = null; } catch (PDOException $e) {   // tampilkan pesan kesalahan jika koneksi gagal   print "Koneksi atau query bermasalah: " . $e->getMessage() . "<br/>";   die(); } ?>
Dalam contoh diatas, saya menjalankan PDO di dalam block TRY…CATCH agar bisa menampilkan pesan kesalahan (error). Selanjutnya, saya membuat koneksi dengan MySQL Server dan menyimpan hasil koneksi ke dalam variabel $dbh. Kita telah membahas tentang hal ini dalam tutorial sebelumnya.
Kode program $dbh->setAttribute digunakan untuk men-set kode error yang dihasilkan agar bisa "ditangkap" oleh block CATCH.
Untuk menjalankan query dengan PDO, kita bisa menggunakan method $dbh->query(). Method ini membutuhkan 1 argumen bertipe string, yakni query yang akan dijalankan. Dalam contoh diatas, saya menggunakan query 'SELECT * FROM mahasiswa_ilkom' untuk menampilkan seluruh tabel mahasiswa_ilkom.
Method $dbh->query() akan mengembalikan nilai berupa objek baru yang digunakan untuk proses berikutnya. Object ini saya tampung ke dalam variabel $result.
Kemudian, untuk menampilkan hasil query saya menggunakan method $result->fetch(). Method ini akan mengembalikan nilai berupa array yang bisa ditampilkan dengan perulangan while seperti biasa.
Apabila anda menjalankan perintah tersebut, isi tabel mahasiswa_ilkom akan ditampilkan di web browser:
089023013 Alex Supriyanto 23 Surabaya 2.90 089023020 Naira Alika 20 Padang 3.90 089023023 Alika Shanum 21 Medan 3.80 089023026 Rina Melita 22 Lampung 3.50 089023031 Joni Halim 21 Palembang 3.60
Mengubah Cara Menampilkan Data PDO
Jika anda perhatikan, dalam contoh diatas kita mengakses hasil query menggunakan array dengan penomoran index. Selain dengan index array, PDO menyediakan berbagai cara untuk menampilkan data sesuai kebutuhan.
Untuk mengubah cara menampilkan data PDO, kita tinggal menambahkan 1 argumen ke dalam method $result->fetch(). Misalkan untuk menampilkan hasil query menggunakan nama kolom sebagai index array, kita bisa menggunakan PDO::FETCH_ASSOC sebagai berikut:
<?php   // kode program untuk koneksi dan menjalankan query   // ...   // ...   // tampilkan data   while($row = $result->fetch(PDO::FETCH_ASSOC)) {   echo $row['nim']." ".$row['nama']." ".$row['umur']." ";    echo $row['tempat_lahir']." ".$row['IPK'];    echo "<br />";   } ?>
Dan jika ingin menampilkan dengan pengaksesan objek, bisa menggunakan PDO::FETCH_OBJ:
<?php   // kode program untuk koneksi dan menjalankan query   // ...   // ...   // tampilkan data   while($row = $result->fetch(PDO::FETCH_OBJ)) {   echo $row->nim." ".$row->nama." ".$row->umur." ";    echo $row->tempat_lahir." ".$row->IPK;    echo "<br />";   } ?>
Selain dengan settingan PDO::FETCH_ASSOC dan PDO::FETCH_OBJ, PDO PHP juga menyediakan beberapa pilihan lain:
- PDO::FETCH_BOTH: mengembalikan nilai berupa array yang bisa di tampilkan menggunakan index angka maupun index nama kolom. Ini adalah pilihan default jika method $result->fetch() ditulis tanpa argumen.
- PDO::FETCH_NUM: mengembalikan nilai berupa array yang bisa di tampilkan dengan index angka.
- PDO::FETCH_CLASS: mengembalikan nilai ke dalam class yang telah disiapkan.
- PDO::FETCH_LAZY: mengkombinasikan PDO::FETCH_BOTH dan PDO::FETCH_OBJ, sehingga bisa dipanggil dengan array maupun objek.
Dalam tutorial belajar PHP MySQL kali ini, kita telah membahas tentang cara menampilkan data query MySQL menggunakan PDO. Dalam tutorial berikutnya kita akan membahas cara menginput data ke MySQL menggunakan PDO PHP.
Untuk koneksinya apa bisa dbuat di file lain contohnya koneksi.php ..
Jadi di file tampil.php tdk usah dibuat ulang koneksi.php dri awal..
Jadi tinggal ditambahkan include "koneksi.php"
tolong berikan contoh codingnya ..
Terima kasih ..
Oh, bisa gan. Hal ini memang disarankan jika terdapat lebih dari 1 halaman yang akan menggunakan koneksi database, sehingga lebih efisien jika koneksi (dan penanganan errornya) diindahkan kesatu file PHP. Kemudian setiap halaman tinggal memanggilnya dengan fungsi include.
Karena pada tutorial ini kita membahas tentang PDO, maka saya akan menggunakan koneksi PDO.
Pada halaman koneksi.php, kita membuat seluruh aturan koneksi beserta penanganan error jika diperlukan. Berikut adalah contoh isi file koneksi.php:
Kode diatas berfungsi untuk membuat koneksi ke MySQL, dan menampilkan error jika terjadi kesalahan.
Untuk menggunakan kode diatas, kita tinggal memanggil halaman koneksi.php dengan fungsi include. Sebagai contoh, saya menggunakan halama tampil.php untuk menampilkan seluruh data tabel mahasiswa_ilkom:
Jika saya ingin membuat halaman lain untuk menampilkan mahasiswa_ekonomi, maka tetap bisa menggunakan include("koneksi.php"), tinggal mengubah nama tabel. Pemisahan file seperti ini bertujuan agar kode menjadi lebih terorganisasi.
Kalo untuk pnggunaan fetch_row() di PDO, sperti di mysql dan mysqli extension gmana ya? apakah ckup dngn mnggunakan PDOStatement::fetch() atau ada yg lain?
Fungsi fetch_row() di dalam mysql dan mysqli extension digunakan untuk menampilkan hasil database berdasarkan index kolom. Dengan demikian, di PDO ini persis sama dengan perintah fetch(PDO::FETCH_NUM). Cara penggunaannya memang sedikit berbeda, namun pengaksesan tabel MySQL tetap sama mengunakan index :)
jdi min, kalo misalnya saya ingin menampilkan sluruh rows, dari tbel A dan hanya 2 column saja yg dipilih dri 5 column yg pnulisan biasa'a sperti :
$i = 0;
while ($row = mysql_fetch_row($query)) {
$data[$i][0] = $row[1];
$data[$i][1] = $row[2];
$i ;
}
jdi kalo mnggunakan PDO apakah sperti ini min?
$i = 0;
while ($row = $query->fetch(PDO::Fetch_Num)) {
$data[$i][0] = $row[1];
$data[$i][1] = $row[2];
$i ;
}
Yup, bener gan, kira2 penggunaannya seperti itu…
Siaplah min, mkasih atas smua informasi'a. Smoga trus brkreasi.
Saya sangat berterima kasih dengan adanya website duniailkom.com ini , mudah dipahami, komplit dan bahan belajar yang sangat ideal. Saya doakan semoga website ini selalu maju dan diberi kemurahan rejeki bagi yang punya..aamiin.
Amiin… terimakasih buat doanya mas.. Saya juga senang tutorial yang ada bisa bermanfaat :)
Terimakasih atas artikel2 nya Mas Andre. Verry usefull for newbie like me in PHP Programming.
Terus terang selama ini sy bergelut di bidang pengembangan aplikasi berbasis desktop (baik stand-alone maupun berbasis client-server) dengan back-end database MySQL dan SQL Server.
Yang mo sy tanyakan adalah: menampilkan data berdasarkan:
1 (satu) kriteria, 2 kriteria dengan operator logika 'and' atau 'or' (mgk scriptnya agat berbeda dengan dalam penulisannya dlm bahasa pemrograman C#/VB)
Logikanya:
1. User memasukkan kriteria ke form Input web browser
2. PHP scripting memproses kriteria ke db MySQL
3. Jika data tersedia berd. kriteria, mk akan ditampilkan di form kembali, dan jika tidak tersedia maka akan ada alert bahwa data tidak tersedia berd. kriteria nilai variabel input pada langkah 1.
Jadi, kira-kira gmn nich implementasinya dengan PHP & HTML (JS kemungkinan terlibat).
Mohon pencerahannya. Kr klo pengembangan aplikasi berbasis desktop hanya cukup mendeklarasikannya di 'General Modul' sehingga semua form dapat mengakses variabel2 tersebut. Terimakasih. Regards.
Salah satu perbedaan mendasar antara desktop programming dengan web programming adalah di perancangan interfacenya. Di web sedikit lebih ribet karena kita memerlukan HTML dan CSS untuk perancangan bentuk formnya.
Pemrosesan form nanti dilakukan dari PHP, termasuk mengatur dan memeriksa isi database MySQL. JavaScript dibutuhkan untuk mempermudah interaksi antara user dengan web, misalnya menampilkan jendela konfirmasi jika ingin menghapus data dari database.
Untuk membuat pemrosesan form seperti ini mau g mau harus belajar semua bahasa dasar web programming mas: HTML, CSS, PHP dan MySQL. JavaScript bisa opsional.
Terimakasih atas pencerahannya Mas Andrew. Ditunggu buku versi cetaknya. Regards.
Siap mas Paul :)
Membantu sekali situs ini Mas untuk mulai belajar PDO.
Terkait dengan tutorial yang lain (Logika IF-ELSE IF), bagaimana menampilkan data seperti di atas namun dipisah dengan tanda koma dan diikuti tampilan data lain dari hasil boolean?
Misal:
089023013, Alex Supriyanto, 23, Surabaya, 2.90, LULUS
Nah data LULUS adalah hasil dari boolean.
Terima kasih sebelumnya, Mas.
Cukup panjang penjelasannya gan, tp kalau sudah mengikuti pembahasan PHP dan MySQL dari awal, nanti akan bisa sendiri tuh… Atau bisa juga cari buku PHP yang lebih detail.
saya coba menampilkan $dbh dengan print_r($dbh) yg muncul cuma PDO Object ()
caranya biar muncul element apa saya yg terkandung dalam object $dbh itu gmn caranya ya mas??
Thks Gan Sangat berguna
Siip gan, semoga bermanfaat…
Sangat bermanfaat.
Penjelasannya mudah dimengerti.
wah keren ni artikelnya mudah dimengerti dan complit
terimakasih kak
sukses terus kak
Siip, semoga bisa bermanfaat..
kalo menampilkan data menggunakan PDO kemudian di tampilkan menggunakan dropdown gmna kak.?
bisa di tuliskan .?
Kode programnya bisa panjang nih (bisa ratusan baris) dan melibatkan HTML + PHP + MySQL. Mungkin lebih pas jika dipelajari dari buku2 khusus yang membahas hal tersebut (terlalu panjang kalau ditulis disini).
Kak, apa resikonya jika tidak menggunakan try dan catch (selain tidak bisa mengetahui error pada koneksi dan query)?
Apakah ada resiko trhdp keamanan web (spt SQLinjection, misalnya)?
Terima kasih
Tidak ada resiko ke keamanan, hanya untuk memudahkan pencarian kesalahan saja (untuk mengetahui error).
gan.. tanya nih.
kode saya seperti ini :
$tampil = mysql_query("SELECT * FROM pelanggan,asm,area WHERE pelanggan.kode_area=asm.kode_area AND asm.kode_area=area.kode_area ORDER BY id_plg DESC);
kalu pake PDO nulis kodenya seperti apa gan ?
sebelumnya terimakasih
gan tanya, kalo querynya untuk menghitung jumlah isi tabel jadi gimana ya isinya?
Query MySQLnya y? bisa seperti ini: SELECT COUNT(*) FROM nama_tabel;
bang kalo mau nampilin data relasi menggunakan pdo gimana ya
Masalah relasi lebih ke cara penulisan query MySQL, tidak berhubungan langsung ke PDO. PDO ini hanya dipakai untuk menampilkan atau menjalankan query saja.
Apakah ada tutorial untuk membuat baris menjadi nama kolom mas? Mohon dijawab terimakasih.