PHP PDO Veri Çekme Ve Listeleme

PDO ile veri çekme işlemi için öncelikle PDO Veritabanı Bağlantısı ile bağlantı yapılıp uygun SQL komutunun yazılması yeterli olacaktır.

PDO ile veri çekme işleminde SELECT deyimi, bir veritabanından veri çekmek için kullanılır. Veri Tabanı bağlantısı için bu konuya bakın.

SELECT Sözdizimi


SELECT column1, column2, ... FROM tablo_adi;

Burada, sütun1, sütun2, ..., içinden veri seçmek istediğiniz tablonun alan adlarıdır. Tabloda bulunan tüm alanları seçmek istiyorsanız, aşağıdaki sözdizimini kullanın:

SELECT * FROM tablo_adi;

PDO ile veri çekmek için öncelikle bir veritabanı bağlantısı yapalım.


<?php
$dsn = "mysql:host=localhost;dbname=test;charset=utf8mb4";
$user = "root";
$passwd = "";

$db = new PDO($dsn, $user, $passwd);

?>

PDO::exec() yöntemi bir SELECT deyiminin sonucunu döndürmez. Bir SELECT deyimini uygulamanız boyunca sadece bir defa çalıştıracaksanız PDO::query() yöntemini kullanabilirsiniz. Defalarca çalıştıracaksanız PDO::prepare() ile bir PDOStatement nesnesi hazırlayıp bunu PDOStatement::execute() ile çalıştırabilirsiniz.

SQL Hata Mesajı Nasıl Alınır?

SQL kodlarda Hata oluştuğunda hata mesajını almak için PDO bağlantının altına Aşağıda ki belirtilen kodları ekleyin.


$db = new PDO($dsn, $user, $passwd);

$db-> setAttribute (PDO :: ATTR_ERRMODE, PDO :: ERRMODE_WARNING);
//pdo bağlantı altına bu kodu SQL hatalarını görmek için ekleyin


Veritabanı tablonuzda yer alan verileri listelemek istediğinizde SELECT komutunu kullanırsınız. Aşağıdaki örnekte tablonuzda tüm kayıtları nasıl listeleyeceğinizi görebilirsiniz.


<?php
try {
  $dsn = "mysql:host=localhost;dbname=test;charset=utf8mb4";
  $user = "root";
  $passwd = "";

  $db = new PDO($dsn, $user, $passwd);
  $db-> setAttribute (PDO :: ATTR_ERRMODE, PDO :: ERRMODE_WARNING);
  $db = $db->query("SELECT * FROM deneme");

  $oku = $db->fetchAll(PDO::FETCH_ASSOC); //verilerin hepsi

  foreach ($oku as $row) {
  extract($row);
  echo "Adı:..$ad Soyad:..$soyad Email:..$email<br/>";
  }
          
  } catch ( PDOException $e ){
     echo "Bir Hata Oluştu: ".$e->getMessage();
 }
?>

Dizideki sütun isimlerini dizi halinde değilde değişken şekilde yazmak için extract fonksiyonundan faydalanıyoruz.

Veritabanımızdan Tek bir veri getirelim.


<?php

$sql = "SELECT * FROM test where id=2";

$oku = $db->query($sql);

$oku = $oku->fetch(PDO::FETCH_ASSOC); // Tek veri

extract($oku);

echo "Adı:..$ad Soyad:..$soyad Email:..$email<br/>";

?>

Veri Alma Yöntemleri


Verileri data->fetch() methodu kullanılarak alınabilir. Verileri aramadan önce, hangi biçime ihtiyaç duyulduğunu açıkça belirtmeniz önerilir. Birkaç seçenek var:

Hazırlanmış İfadeler Ve Güvenlik

SQL sorgunuz değişkenler içeriyorsa hazırlanmış ifadeler kullanılmalıdır.

Hazırlanan ifadeleri kullanmak, SQL enjeksiyonlarına karşı korumayı artırır.

Hazırlanan bir ifade, sunucuya yalnızca farklı veri kümeleri göndererek sürekli olarak çalıştırılabilen önceden derlenmiş bir SQL ifadesidir. Bu, yer tutucularda kullanılan verilerin otomatik olarak SQL enjeksiyon saldırılarına karşı güvenli hale getirilmesi avantajına sahiptir.

PDO'da hazırlanmış ifadeler, bir değişkenin özel bir işaretçi - bir yer tutucuyla değiştirildiği normal bir SQL sorgusudur.


$query = $db->prepare("SELECT * FROM uyeler WHERE id=:uye_id AND ad=:uye_ad");
$query->bindParam(':uye_id',$id);
$query->bindParam(':uye_ad',$ad);
$query->execute();

if ( $query->rowCount() ){
     foreach( $query as $row ){
       echo $row['sutunadi']."<br>";// sutunadi misal ad,email...
     }
}
else{
    echo "Kayıt bulunamadı";
}

Parametrelerinizi tek tek göndermek yerine liste şeklinde de gönderebilirsiniz. Yukarıdaki aynı örnek üzerinde çalışırsak kodlarımız şu şekilde olacaktır.


$query = $db->prepare("SELECT * FROM tabloadi WHERE id=:uye_id AND ad=:uye_ad");
$query->execute(array($id,$ad));// Liste halinde gönderiliyor.

if ( $query->rowCount() ){
     foreach( $query as $row ){
          echo $row['sutunadi']."<br>";
     }
}
else{
    echo "Kayıt bulunamadı";
}

Adsız yer tutucular


Şimdi isimsiz yer tutucularla çalışmaya bakalım.


$query = $db->prepare("SELECT * FROM tabloadi WHERE id=? AND ad=?");

$query->execute(array($id,$ad));

Bu sözdiziminde, bir yer tutucu kaydı :üye_ad yerine ? adsız yer tutucu belirtilmiş.

PDO Veritabanı Sonlandırma


Veritabanı işlemlerimiz bittikten sonra veritabanı ile bağlantıyı sonlandırmak için yapmamız gereken şey bağlantımıza null değeri vermek. Aşağıdaki örnek kodumuzu inceleyelim.

$db = null;

PDOStatement->rowCount: Son SQL deyiminden etkilenen satır sayısını döndürür.

rowCount()

Lütfen konu haricinde soru sormayın cevaplanmayacaktır. Yorumunuz onaylandıktan sonra yayınlanacaktır. Lütfen Yukarıda ki mesajları okuyun tekrar aynı soruları sormayın.

8636

KATEGORİ
  • HTML
  • CSS
  • PHP
  • JQUERY
  • PHOTOSHOP
  • JavaScript
  • Web Dünyası
  • Linux
  • MİTHRİL FRAMEWORK
  • Laravel
  • Git
  • React
POPÜLER MAKALE
  • HTML LİNK(Bağlantı)EKLEME - LİNK VERME
  • HTML YAZI VE RESİM ORTALAMA
  • HTML RESME LİNK VERME
  • HTML FORM OLUŞTURMA
  • CSS YATAY MENÜ YAPIMI
  • HTML RESİM EKLEME
  • CSS (BOYUT) GENİŞLİK VE YÜKSEKLİK (Width-Height)
  • HTML DİV ve SPAN NEDİR?
  • HTML ARKAPLANA MÜZİK EKLEME
  • KALİTE KAYBETMEDEN RESİMLERİ BÜYÜTME
ETİKET
WEBCEBİR © 2013 Tüm hakları saklıdır.