Cara menggunakan php pdo get data

Your code is missing a call to execute() after prepare(). After your prepared statement is executed you can get the array of records using fetchAll().

$getUsers = $DBH->prepare('SELECT * FROM users ORDER BY id ASC');
$getUsers->execute();
$users = $getUsers->fetchAll();

// Then in your presentation logic you can use the following code to display the data:
if ($users) {
    foreach ($users as $user) {
        echo $user['username']."<br/>";
    }
} else {
    // Whatever your requirement is to handle the no user case, do it here.
    echo 'Error: No users.';
}

However, in you example you are not passing any variable data to the query and you only execute it once, which defeats a purpose of having prepared statement. You should use prepared statements if you need to have variables in your SQL, for example:

$getUsers = $DBH->prepare('SELECT * FROM users WHERE id=?');
$getUsers->execute([
    $_GET['user_id']
]);
$user = $getUsers->fetch();     // get single user by unique id

If there are no variables then you can simply use query() method.

$users = $DBH->query('SELECT * FROM users ORDER BY id ASC')->fetchAll();

If you do not need to fetch all records at once, you can simply loop on the statement with foreach:

$getUsers = $DBH->prepare('SELECT * FROM users WHERE username LIKE ? ORDER BY id ASC');
$getUsers->execute([
    '%' . $_GET['search'] . '%'     // search for username with wildcards
]);

foreach ($getUsers as $user) {
    echo $user['username']."<br/>";
}

Cara menggunakan php pdo get data

Untuk dapat menerapkan PDO (PHP Data Objects) anda harus membuat sebuah koneksi dengan PDO terlebih dahulu yang akan menghubungkan PHP dengan database, jika belum buat baca Membuat Koneksi MySql Database dengan PDO. Kalau sudah membuat dan paham silahkan lanjutkan membaca artikel sederhana ini. Pada contoh ini saya menggunakan yang sederhana saja agar mudah dipahami bagi mereka yang baru memulai belajar PHP dan PDO, berikut adalah langkah-langkah penerapan PDO pada proses CRUD :

  • Create (Menyisipkan Data Pada Tabel) Syntax berikut ini digunakan untuk meyisipkan data (record) pada tabel yang dituju dalam suatu database. contoh :
    
    $query = $pdo->prepare("INSERT INTO mahasiswa VALUES('".$nim."',
    '".$nama."',
    '".$alamat."',
    '".$jurusan."')
    "); 
    $query->execute();
    
    
  • Read (Membaca Data Tabel)
    Syntax berikut ini digunakan untuk membaca data pada tabel (record) yang sudah ditambahkan sebelumnya dalam suatu database, contoh :
    
    $query = $pdo->prepare("SELECT * FROM mahasiswa "); 
    $query->execute(); 
    while($data = $query->fetch()){  
      ECHO $data['nama'];   
    }
    
    
  • Update (Memperbaharui Data Tabel)
    Syntax berikut ini digunakan untuk memperbaharui data tabel (record) yang sudah pernah ditambahkan sebelumnya dalam suatu database, contoh :
    
    $query = $pdo->prepare("UPDATE mahasiswa SET nama='".$nama."',
         alamat='".$alamat."',
         jurusan='".$jurusan."' 
         WHERE nim='".$nim."' "); 
    $query->execute();
    
    

  • Delete (Menghapus Data Tabel)
    Syntax berikut ini digunakan untuk meghapus data tabel (record) yang sudah pernah ditambahkan sebelumnya namun sudah tidak diperlukan lagi dalam suatu database, contoh :
    
    $query = $pdo->prepare("DELETE FROM mahasiswa WHERE nim=$nim"); 
    $query->execute(); 
    
    

Tidak ada komentar

Saya pasti senang jika anda dapat memberi komentar sebagai jejak anda dan masukan atau pendapat anda, bahkan mungkin dapat menjadi referensi bagi teman yang lain juga bermanfaat bagi perkembangan blogon.id dalam menulis artikelnya, tetapi ingat tidak berbau p*rno, sara, tidak memasang link aktif dan tentunya tidak melanggar hak cipta orang lain ya...

Topik ini merupakan sambungan dari dua topik sebelumnya. Topik ini membutuhkan tabel toko.barang dan variabel PDO bernama $db pada file sambung.php pada topik koneksi PDO. Dan juga data pada topik eksekusi sql dengan PDO. Tetapi Anda juga dapat menggunakan data Anda sendiri untuk ujicoba di sini.

Memanggil data dari database menggunakan PDO dapat dilakukan dengan PDO::query() atau PDOStatement::execute(). Data yang diambil dari database dapat diatur ke dalam bentuk array berindex angka, array berindex sesuai nama kolom, atau dalam bentuk objek dengan field sesuai nama kolom.

Memanggil data dengan PDO::query

<?php
include "sambung.php";
$sth = $db->query("SELECT * FROM barang");
while ($barang = $sth->fetch()) {
  echo "<pre>".print_r($barang,true)."</pre>";
}
?>

Output:

stdClass Object
(
    [id] => 1
    [tipe] => Chitato
    [kategori] => Snack
    [harga] => 7000
)
stdClass Object
(
    [id] => 2
    [tipe] => Mr. P
    [kategori] => Snack
    [harga] => 4500
)
stdClass Object
(
    [id] => 3
    [tipe] => Silver Queen Chunky Bar
    [kategori] => Snack
    [harga] => 9000
)
stdClass Object
(
    [id] => 4
    [tipe] => Sprite
    [kategori] => Minuman
    [harga] => 7500
)
stdClass Object
(
    [id] => 5
    [tipe] => Fanta
    [kategori] => Minuman
    [harga] => 7500
)
stdClass Object
(
    [id] => 6
    [tipe] => Coca Cola
    [kategori] => Minuman
    [harga] => 7500
)
stdClass Object
(
    [id] => 7
    [tipe] => Gudang Garam Surya
    [kategori] => Rokok
    [harga] => 17000
)
stdClass Object
(
    [id] => 8
    [tipe] => Dji Sam Soe
    [kategori] => Rokok
    [harga] => 13500
)

Pada contoh di atas, perintah $db->query() menghasilkan sebuah objek PDOStatement yang kita tampung di dalam variabel $sth. Variabel $sth tersebut langsung dapat kita pakai untuk memanggil data dengan perintah $sth->fetch()$sth->fetch() akan mengembalikan nilai selama masih ada baris data. Bila tidak ada baris data, maka $sth->fetch() akan mengembalikan false, sehingga pernyataan $baris=$sth->fetch() dapat kita letakkan di dalam kondisi while. Ketika masih ada data, maka akan masuk ke dalam struktur while, jika data sudah habis, maka akan keluar dari struktur while.

Perintah $sth->fetch() dapat mengembalikan nilai dalam berbagai format. Karena di dalam sambung.php terdapat baris program $db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ);, maka $sth->fetch() mengembalikan nilai dalam bentuk object. Kita juga dapat menentukan format nilai tersebut dengan menyertakan parameter pada method $sth->fetch(). Seperti dapat dilihat pada contoh berikut:

<?php
include "sambung.php";
$sth = $db->query("SELECT * FROM barang");
echo "<b>Fetch Obj</b><br />";
$barang = $sth->fetch(PDO::FETCH_OBJ);
echo "<pre>".print_r($barang,true)."</pre>";
echo "<b>Fetch Assoc</b><br />";
$barang = $sth->fetch(PDO::FETCH_ASSOC);
echo "<pre>".print_r($barang,true)."</pre>";
echo "<b>Fetch Num</b><br />";
$barang = $sth->fetch(PDO::FETCH_NUM);
echo "<pre>".print_r($barang,true)."</pre>";
echo "<b>Fetch Both</b><br />";
$barang = $sth->fetch(PDO::FETCH_BOTH);
echo "<pre>".print_r($barang,true)."</pre>";
?>

Output:

Fetch Obj
stdClass Object
(
    [id] => 1
    [tipe] => Chitato
    [kategori] => Snack
    [harga] => 7000
)
Fetch Assoc
Array
(
    [id] => 2
    [tipe] => Mr. P
    [kategori] => Snack
    [harga] => 4500
)
Fetch Num
Array
(
    [0] => 3
    [1] => Silver Queen Chunky Bar
    [2] => Snack
    [3] => 9000
)
Fetch Both
Array
(
    [id] => 4
    [0] => 4
    [tipe] => Sprite
    [1] => Sprite
    [kategori] => Minuman
    [2] => Minuman
    [harga] => 7500
    [3] => 7500
)

Selain mengambil nilai satu-persatu seperti di atas, kita juga dapat mengambil seluruh baris data secara sekaligus ke dalam array dengan $sth->fetchAll() seperti contoh berikut:

<?php
include "sambung.php";
$kat = $db->quote("Snack");
$sth = $db->query("SELECT * FROM barang WHERE kategori=$kat");
$barangs = $sth->fetchAll();
echo "<pre>".print_r($barangs,true)."</pre>";
?>

Output:

Array
(
    [0] => stdClass Object
        (
            [id] => 1
            [tipe] => Chitato
            [kategori] => Snack
            [harga] => 7000
        )

    [1] => stdClass Object
        (
            [id] => 2
            [tipe] => Mr. P
            [kategori] => Snack
            [harga] => 4500
        )

    [2] => stdClass Object
        (
            [id] => 3
            [tipe] => Silver Queen Chunky Bar
            [kategori] => Snack
            [harga] => 9000
        )

)

Sama seperti method $sth->fetch(), $sth->fetchAll() juga dapat diberi parameter untuk mengatur format data yang dikembalikan, seperti misalnya $sth->fetchAll(PDO::FETCH_ASSOC). Pada contoh di atas, kita juga menggunakan $db->quote() untuk mengamankan $kat dari SQL Injection, seandainya $kat berasal dari input oleh user.

Memanggil data dengan PDOStatement::execute

Sama seperti mengeksekusi perintah SQL, mengambil data melalui PDO juga dapat dilakukan dengan prepared statement. Untuk penjelasan lebih lengkap mengenai prepared statement, dapat membaca topik sebelumnya.

<?php
include "sambung.php";
$sth = $db->prepare("SELECT * FROM barang WHERE kategori=?");
$sth->execute(["Minuman"]);
$barangs = $sth->fetchAll();
echo "<pre>".print_r($barangs,true)."</pre>";
?>

Output:

Array
(
    [0] => stdClass Object
        (
            [id] => 4
            [tipe] => Sprite
            [kategori] => Minuman
            [harga] => 7500
        )

    [1] => stdClass Object
        (
            [id] => 5
            [tipe] => Fanta
            [kategori] => Minuman
            [harga] => 7500
        )

    [2] => stdClass Object
        (
            [id] => 6
            [tipe] => Coca Cola
            [kategori] => Minuman
            [harga] => 7500
        )

)

Seperti telah dijelaskan pada topik sebelumnya. Jika kita menggunakan prepared statement, tidak perlu khawatir akan SQL Injection. Tentunya kita juga dapat menghindari SQL Injection dengan gabungan $db->query() dan $db->quote(). Silahkan pilih cara yang paling efektif bagi Anda :) .


Apa fungsi PDO?

PDO bertujuan untuk membuat satu buah interface yang seragam untuk koneksi ke beragam jenis database. Ketika Anda menggunakan database yang didukung oleh PDO seperti misalnya MySQL, Oracle, MS.

Apa yang dimaksud dengan PDO?

"PDO - PHP Data Objects - adalah lapisan akses database yang menyediakan metode akses yang seragam ke beberapa database." Ini tidak memperhitungkan sintaks database-spesifik, namun memungkinkan proses peralihan database dan platform menjadi lebih mudah, cukup dengan mengganti string koneksi dalam banyak instance.

Apa perbedaan sql MySQL dan MySQLi?

Perbedaan MySQL dan MySQLi adalah tipe dukungan yang disediakan. Jika MySQL hanya mendukung MySQL server sampai di versi 4.1.3, MySQLi dapat dipakai sampai dengan versi paling baru. Fiturnya pun lebih banyak bisa dipakai ketika menggunakan MySQLi dibandingkan menggunakan MySQL.