Assalamualaikum wr. wb. kali ini saya akan menulis tutorial tentang Menampilkan isi Database dengan PDO (PHP Data Objek) dengan gaya pemrograman prosedural. Bagi yg belum paham tentang PDO silahkan browsing dulu sebentar  hehe.kalau sudah paham, mari lanjut ke tutorial. disini saya menggunakan database coba d...

Menampilkan isi Database dengan PDO (PHP Data Objek)

Assalamualaikum wr. wb.
kali ini saya akan menulis tutorial tentang Menampilkan isi Database dengan PDO (PHP Data Objek) dengan gaya pemrograman prosedural. Bagi yg belum paham tentang PDO silahkan browsing dulu sebentar  hehe.kalau sudah paham, mari lanjut ke tutorial.

disini saya menggunakan database coba dan nama tabelnya buku.
silahkan download disini. kemudian import ke phpmyadmin.
setelah diimport, langsung saja buat koneksi PDO.

<?php

error_reporting(0);

try{

            $koneksi = new PDO("mysql:host=localhost;dbname=coba","root","12345");

}catch(PDOException $e){

            echo "Koneksi Gagal ".$e->getMessage();

}

 

Selanjutnya kita mulai mengambil datanya (Fetching Data)

Berikut isi tabelnya.

 

kemudian berikut code fetching data dengan PDO,

$ambil=$koneksi->prepare("select * from buku order by id_buku desc");

$ambil->execute();

while($tampil=$ambil->fetch()){

            echo "</br>";

            echo $tampil['nama_buku'];

}

 

Hasilnya

 

 

Bagi pemula mungkin agak membingungkan karna ada  keyword-keyword   baru, sangat berbeda dengan mysql_connect dan kroni-kroninya …
didalam PDO ada keyword Prepare
kagunaan Prepare adalah memisah antara Query dan Parameter.
pada contoh diatas memang saya tidak memberikan parameter apapun, contoh diatas hanya sekedar Query biasa karna hanya menampilkan isi secara keseluruhan. untuk contoh pengiriman parameter akan dijelaskan pada bagian berikut.
Ada dua cara pengiriman parameter  dalam PDO. Yg pertama menggunakan named placeholder “:” (titik dua) yang kedua menggunakan question mark placeholoder “?” (tanda tanya). sebelum melanjutkan tutorial, kita pahami dulu apa itu Query dan Parameter


Query merupakan perintah sql untuk memanipulasi data

contoh :
Query Menampilkan isi database
Query ->


select * from nama_tabel

sedangkan parameter adalah data yg akan dikirim sebagai acuan,
contoh :

parameter ->

id_buku=:id

harga_buku=:harga

jelas?
lanjut ke tutorial

Menggunakan named placeholder “:” (tanda titik dua)

// disini saya buat 2 variabel ($id_buku & $harga_buku) sebagai parameter acuan

$id_buku=5;

$harga_buku=1500;

$ambil=$koneksi->prepare("select * from buku where id_buku=:id and harga_buku=:harga_buku");

$ambil->BindParam(":id",$id_buku);

$ambil->BindParam(":harga_buku",$harga_buku);

$ambil->execute();

while($tampil=$ambil->fetch()){

            echo "</br>";

            echo $tampil['nama_buku'];

}

 

hasilnya

 

Kita lihat query diletakkan pada keyword prepare() (select * from buku where), dilanjutkan dengan menggunakan named placeholder “:” (id_buku=:id and harga_buku=:harga_buku), kemudian parameter tersebut dikirim melalui keyword BindParam().

 

Jika menggunakan named placeholder “:”, maka parameter yg dikirim sebagai acuan harus disesuaikan dengan variabelnya.

 contoh

 

$ambil->BindParam(":id",$id_buku);

//named placeholder :id adalah mengambil dari $id_buku

 

$ambil->BindParam(":harga_buku",$harga_buku);

// named placeholder :harga_buku adalah mengambil dari $harga_buku

 

Menggunakan question mark placeholder “?” (tanda tanya)

    $id_buku=5;

    $harga_buku=1500;

    $ambil=$koneksi->prepare("select * from buku where id_buku=? and harga_buku=?");

    $ambil->BindParam(1,$id_buku);

    $ambil->BindParam(2,$harga_buku);

    $ambil->execute();

    while($tampil=$ambil->fetch()){

                echo "</br>";

                echo $tampil['nama_buku'];

    }

 

Jika menggunakan question mark placeholder “?” (tanda tanya), maka parameter yg dikirim harus sesuai urutan.

 

("select * from buku where id_buku=? and harga_buku=?")

Dimana id_buku=? Adalah question mark placeholder yg pertama (1,$id)

Dan harga_buku=? Adalah question mark placeholder yg kedua (2,$harga)

hasilnya sama saja.

 

 

 

Code lengkap.
Menggunakan named placeholder “:” (tanda titik dua).

 

    <?php

    try{

                $koneksi = new PDO("mysql:host=localhost:4001;dbname=coba","root","12345");

    }catch(PDOException $e){

                echo "Koneksi Gagal ".$e->getMessage();

    }

    $id_buku=5;

    $harga_buku=1500;

    $ambil=$koneksi->prepare("select * from buku where id_buku=:id and harga_buku=:harga_buku");

    $ambil->BindParam(":id",$id_buku);

    $ambil->BindParam(":harga_buku",$harga_buku);

    $ambil->execute();

    while($tampil=$ambil->fetch()){

                echo "</br>";

                echo $tampil['nama_buku'];

    }

    ?>

 

Menggunakan question mark placeholder “?” (tanda tanya)

    <?php

    try{

                $koneksi = new PDO("mysql:host=localhost:4001;dbname=coba","root","12345");

    }catch(PDOException $e){

                echo "Koneksi Gagal ".$e->getMessage();

    }

    $id_buku=5;

    $harga_buku=1500;

    $ambil=$koneksi->prepare("select * from buku where id_buku=? and harga_buku=?");

    $ambil->BindParam(1,$id_buku);

    $ambil->BindParam(2,$harga_buku);

    $ambil->execute();

    while($tampil=$ambil->fetch()){

                echo "</br>";

                echo $tampil['nama_buku'];

    }

    ?>

 

Dan jangan lupa untuk selalu menutup koneksi.

    if(isset($koneksi)){

                $koneksi=null;

    }

 

Dari dua cara diatas, kita bebas memilih mana yang kita suka. Keduanya aman dari serangan injeksi (SQL Injection)

semoga bermanfaat, trima kasih.
Wassalamualaikum. wr. wb.

 

 

 

 

 


About Author

d-newbie

Adalah seorang ninja dari Coding Gakure, Menguasai jurus HTML no jutsu, CSS no jutsu, Javascript no jutsu, PHP no jutsu, dan MySQL no jutsu, jurus andalan adalah KageLooping no jutsu, yg bisa memperbanyak output sekali coding , ninja yang berasal dari TIM W3, dan diasuh oleh petapa genit yang suka menjilat-jilat situs yaitu google.com. :D #xixixi


Comment & Discussions

  • Arif Ninegrafh
    kalau untuk nenampilkan data lewat search box dengan database oracle gimna ya

  • Please LOGIN before if you want to give the comment.