lostyazilim
tr.link

PHP Data Object (PDO)

8 Mesajlar 5.665 Okunma
acebozum
tr.link

myenes myenes $php = new PHP(); Kullanıcı
  • Üyelik 28.09.2011
  • Yaş/Cinsiyet 38 / E
  • Meslek Back-end Developer
  • Konum İstanbul Avrupa
  • Ad Soyad E** G**
  • Mesajlar 1051
  • Beğeniler 253 / 258
  • Ticaret 5, (%100)
PDO Nedir ?

PDO isminden de anlaşılacağı gibi PHP Veri Nesneleri (PDO) eklentisidir. Yani kısaca ve anlaşılır bir şekilde özetlemek gerekirse, eskiden PHP'de kullandığımız mysql_ komutlarının yerine gelen daha hafif ve güvenli bir eklentidir.

PHP.NET Sayfasında PDO Tanımı İse;


PHP Veri Nesneleri (PDO) eklentisi, PHP'deki veritabanlarına erişmek için hafif ve tutarlı bir arayüz tanımlar. PDO arayüzü tanımı bulunan her veritabanı sürücüsü, veritabanına özgü özellikleri sıradan eklenti işlevleri olarak ifade edebilir. Yalnız dikkat edin, PDO eklentisinin kendisini her veritabanı işlevi için kullanamazsınız; bir veritabanı sunucusuna erişmek için veritabanına özgü PDO sürücüsünü kullanmalısınız.

PDO bir veri erişimli soyutlama katmanı sağlar, yani, kullandığınız veritabanından bağımsız olarak sorguları çalıştırmak ve sonuçları döndürmek için aynı işlevleri kullanabilirsiniz. PDO bir veritabanı soyutlaması yapmaz; SQL deyimini yeniden yazmaz ya da olmayan özellikleri taklit etmez. Bu özellikleri istiyorsanız tam gelişmiş soyutlama katmanını kullanmalısınız.

PDO, PHP 5.1'den itibaren PHP ile birlikte gelir ve PHP 5.0'dan beri bir PECL eklentisi olarak da mevcuttur. PDO, PHP 5'teki yeni nesne yönelimli özelliklere ihtiyaç duyar; bu bakımdan PHP'nin daha önceki sürümleri ile çalışmaz.


PDO'nun ne olduğunu birincil ağızdan dinlediğimize göre artık kullanımına geçebiliriz..

PDO Serverimizde Mevcut mu ?
Öncelikle PDO'yu serverinizde çalıştırabilmeniz için PDO eklentisinin aktif olması gerekmektedir. Bunu öğrenmek için herhangi bir php dosyasına phpinfo();
komutunu yazıp çalıştıralım. Çıkan sonuçta eğer resimde ki gibi bir alan mevcutsa PDO MySQL eklentisi başarıyla çalışacaktır..



PDO İle MySQL Bağlantısı Kurma
PDO'yu serverimizde çalışabileceğini öğrendikten sonra sıra geldi veritabanımız ile bağlantı kurmaya bunun için yapmanız gerekenler çok basit, ancak mysql_connect ve buna benzer mysql_ komutlarına alışanların bu PDO serüveninde biraz zorluk çekeceğini söyleyebiliriz..


// PDO ile Veritabanımıza Bağlanıyoruz...

$db = new PDO("mysql:dbname=databaseadi;host=localhost","kullaniciadi","sifre");

// Bu kod satırı ile bağlantımızı Oluşturduk peki bağlantı kuruldu mu ?
// Benim kullandığım test etme şekli...
try
{
$db = new PDO("mysql:dbname=databaseadi;host=localhost","kullaniciadi","sifre");
echo "PDO Connection...";
}
catch(PDOException $e) // İstisna Durumunda
{
echo $e->getMessage(); // Hata mesajını yazdır..
}

Bu kodlar ile veritabanı bağlantımızı kurup test etmiş oluyoruz..

PDO İle Sorgu (Query) Gönderme İşlemi

mysql_query ile yapılan sorguların yerini ise artık bu kullanım alıyor.


$query = $db ->query("Sorgu Kodumuz");

Peki sorgumuzu yaptık peki sorgu oldu mu ? yani başarılı bir şekilde sorgumuz gerçekleşti mi ? bunun için yapmanız gereken..

$query = $db ->query("SELECT * FROM uye");
if(!$query)
echo "Sorgu Başarısız...";
else
echo "Sorgu Başarılı...";

Böylece sorgumuzu gönderip sorgunun olup olmadığını anlıyoruz..

PDO İle Verileri Listeleme

PDO ile sorgumuzu kontrol ettik. Peki kontrol başarılıysa ve listeleme yapmak istiyorsak bunu eskiden yaptığımız mysql_fetch_array(); komutu yerine uzun süredir kullanmadığım foreach döngüsü ile gerçekleştiriyoruz. Gerçekten fazla kullanmadığım bir döngüydü özlemişim :)


foreach($sorgu as $row){
echo $row[uye_adi];
}

Bu kod ile tüm üyelerin adını döngü içinde listeledik peki ya koşullu bir şekilde yapsaydık ve sadece bir sonuç arıyorsak bunun için ne yapacaktık ?
Aslında bu sorununda cevabı foreach'de ancak belki de başka bir PDO komutu ile de aynı işlevi yapabiliyoruzdur bunun için eğer başka bir yöntemi olan yada bilgisi olan bizimle paylaşırsa memnun oluruz..

$sorgu2 = $db->query("SELECT * FROM uye WHERE kullanici_id = 2 ");
if(!$sorgu2)
echo "Sorgu Başarısız";
else{
foreach($sorgu2 as $row2) // Çıkan değeri $row2 adında bir diziye atadık.

echo $row2[kullanici_adi];
echo $row2[kullanici_sifre];
echo $row2[kullanici_mail];

}

PDO İle Veri Ekleme İnsert Komutu
Sorgulama işlemiyle aynı aslına bakarsanız yapmanız gereken sadece sql deyiminizi değiştireceksiniz..

$query_ekle = $db ->query("INSERT INTO uye (uye_adi,uye_sifre) VALUES ('ENES','GÜR')");
if($query_ekle)
echo "ekleme oldu";
else
echo "ekleme olmadı..";


PDO UPDATE Yapma

$query_guncel = $db->query("UPDATE uye SET uye_adi='enes', uye_mail='enes@enes.com' WHERE uye_id=15");
if(!$query_guncel)
echo "Güncelleme Başarısız..";
else
echo "Güncelleme Başarılı";


PDO ile Tek Satırlık Veri Çekmek

$row = $db->query('SELECT * FROM ogrenciler WHERE id = 1')->fetch()

fetch(); ile foreach yerine tek satırlık veriler çekmek için kullanabiliriz...

PDO ile yapılacak temel olaylar bunlardır zaten genellikle ve sıkça kullandığımız veritabanı işlemleri de bunlar tabi daha vardır muhakkak ki. Bu yazımda sizlere PDO ile veritabanı işlemlerini gösterdim umarım yararlı olmuştur. İyi çalışmalar..

Güncelleme: 30.05.2013
Omercitak

kişi bu mesajı beğendi.

elektronikssl
webimgo

BlacKStorM BlacKStorM WM Aracı Kullanıcı
  • Üyelik 26.05.2013
  • Yaş/Cinsiyet 38 / E
  • Meslek Developer
  • Konum Manisa
  • Ad Soyad S** K**
  • Mesajlar 134
  • Beğeniler 6 / 15
  • Ticaret 1, (%100)
çok güzel anlatmışsınız elinize sağlık örnekler filan çok güzel ve acıklayıcı olmus
 

 

PHPBOT.NET Haber Botu Servisi

fatihcan fatihcan www.ktubotekulubu.com Kullanıcı
  • Üyelik 28.08.2012
  • Yaş/Cinsiyet 32 / E
  • Meslek Öğrenci
  • Konum Trabzon
  • Ad Soyad ** **
  • Mesajlar 478
  • Beğeniler 212 / 75
  • Ticaret 2, (%100)
Çok teşekkürler mysql_query kaldırılacak diyorlardı bende PDO öğrenilecek güzel kaynak arıyordum. Sonuçta tüm sitedeki kodlar değişecekti bu çok güzel olmuş gerçekten ellerinize sağlık.
 

 

myenes myenes $php = new PHP(); Kullanıcı
  • Üyelik 28.09.2011
  • Yaş/Cinsiyet 38 / E
  • Meslek Back-end Developer
  • Konum İstanbul Avrupa
  • Ad Soyad E** G**
  • Mesajlar 1051
  • Beğeniler 253 / 258
  • Ticaret 5, (%100)
Tek satırlık veriler çekmek için kullanılan komut satırı eklenmiştir. Foreach yerine artık tek satırlarda fetch(); kullanabiliriz.. Yorumlarınız için teşekkür ederim.
 

 

wmaraci
wmaraci

soulmy soulmy WM Aracı Kullanıcı
  • Üyelik 12.06.2012
  • Yaş/Cinsiyet 38 / E
  • Meslek Öğretmen
  • Konum Samsun
  • Ad Soyad O** Y**
  • Mesajlar 1722
  • Beğeniler 398 / 400
  • Ticaret 20, (%100)
mysql bağlantısını

$db = new PDO("mysql:dbname=databaseadi;host=localhost","kullaniciadi","sifre");

bununla yaptık, peki bağlantıyı nasıl kapatacağız?
 

 

.

myenes myenes $php = new PHP(); Kullanıcı
  • Üyelik 28.09.2011
  • Yaş/Cinsiyet 38 / E
  • Meslek Back-end Developer
  • Konum İstanbul Avrupa
  • Ad Soyad E** G**
  • Mesajlar 1051
  • Beğeniler 253 / 258
  • Ticaret 5, (%100)

soulmy adlı üyeden alıntı

mysql bağlantısını

$db = new PDO("mysql:dbname=databaseadi;host=localhost","kullaniciadi","sifre");

bununla yaptık, peki bağlantıyı nasıl kapatacağız?


$db=null; :)
 

 

soulmy soulmy WM Aracı Kullanıcı
  • Üyelik 12.06.2012
  • Yaş/Cinsiyet 38 / E
  • Meslek Öğretmen
  • Konum Samsun
  • Ad Soyad O** Y**
  • Mesajlar 1722
  • Beğeniler 398 / 400
  • Ticaret 20, (%100)
Hımm, anladım :)
 

 

.

myenes myenes $php = new PHP(); Kullanıcı
  • Üyelik 28.09.2011
  • Yaş/Cinsiyet 38 / E
  • Meslek Back-end Developer
  • Konum İstanbul Avrupa
  • Ad Soyad E** G**
  • Mesajlar 1051
  • Beğeniler 253 / 258
  • Ticaret 5, (%100)


Header'da bağlantıyı açıp footer'da kapatarak bunları da include ederseniz bir sıkıntı olacağını sanmam kolay gelsin.
soulmy

kişi bu mesajı beğendi.

wmaraci
wmaraci
Konuyu toplam 1 kişi okuyor. (0 kullanıcı ve 1 misafir)
Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al