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
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:
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);
?>
localhost:
Veritabanı kurulumunuz aynı sunucudaysa localhost kalabilir. Farklı bir sunucudaysa sunucu ip adresini yazmanız gerekiyor.dbname:
Veritabanı adı$user:
Veritabanı kullancı adı (default "root")$pasword:
Veritabanı kullanıcı şifre (default olarak boş bırakılır. Siz mysql kullanıcısı için bir şifre belirlediyseniz o şifreyi girmeniz gerekiyor)
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:
- PDO :: FETCH_ASSOC: Anahtar olarak sütun adlarıyla bir dizi döndürür.
- PDO :: FETCH_BOTH (varsayılan): Hem sütun adları hem de sıra numaraları biçiminde indisleri olan bir dizi döndürür.
- PDO::FETCH_BOUND: Sütun değerlerini
PDOStatement::bindColumn()
ile ilişkilendirilmiş PHP değişkenlerine atar veTRUE
döndürür. - PDO :: FETCH_CLASS: Sütun sınıflarını belirtilen sınıfın uygun özelliklerine atar. Bazı sütun için özellik yoksa, oluşturulacak.
- PDO :: FETCH_INTO: Belirtilen sınıfın mevcut bir örneğini günceller.
- PDO::FETCH_LAZY: PDO::FETCH_BOTH ve PDO::FETCH_OBJ sabitlerinin birleşimidir.
- PDO::FETCH_NUM: Sütun numaralarına göre indislenmiş bir dizi döner. İlk sütunun indisi 0'dır.
- PDO::FETCH_OBJ: Özellik isimlerinin sınıf isimlerine denk düştüğü bir anonim nesne örneği döndürür.
Hazırlanmış İfadeler Ve Güvenlik
SQL sorgunuz değişkenler içeriyorsa hazırlanmış ifadeler kullanılmalıdı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()
- HTML
- CSS
- PHP
- JQUERY
- PHOTOSHOP
- JavaScript
- Web Dünyası
- Linux
- MİTHRİL FRAMEWORK
- Laravel
- Git
- React
- 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