PHP PDO VERİTABANI BAĞLANTISI ve ÖRNEKLERİ

PHP PDO VERİTABANI BAĞLANTISI ve ÖRNEKLERİ

Tarhi : 12-02-2017 07:45:56 | Yazar : ÇAĞLAR BOSTANCI

PHP

PHP PDO ile veri tabanı bağlantısı kurabilmemiz için php.ini dosyasındaki pdo desteğini açmamız gerekmektedir.
PHP PDO PostgreSQL-MySQL-ORACLE-SQLite veritabanlarnına destek sağlamaktadır.
PHP PDO Bağlantısı PDO($DSN[,$Kullanici[,$parola[,$secenekler]]]) şeklinde kurulur.
DSN MYSQL “mysql:host=$host; dbname=$db”
DSN MYSQL “mysql:host=$host; port=3306; dbname=$db”
Charset PDO::MYSQL_ATTR_INTI_COMMAND=>’SET NAME utf8′
Hata Yakalama
PDO:ATTR_ERRMODE=> PDO::ERRMODE_EXEPTION
PDO:ATTR_ERRMODE bu kullanım üç değer alır
PDO::ERRMODE_SILENT Sadece hata kodlarını gösterir.
PDO::ERRMODE_EXCEPTION Bir istisna blogu olşur ve try/catch blogu ile hata yakalanır.
PDO::ERRMODE_WARNING Bir E_WARNING çıktısı verir
setAttribute() : PDO bagkulumunda ek fonksiyolar girmede kullanılır
exec() : sql deyimi çalıştırı ve etkilenen satır sayısını geri dönderir. (INSERT-UPDATE-DELETE) SQL deyimlerinin çalıştırılmasında tercih edilir.
query() : SQL deyimini çalıştırıp tabloda veri sonuçlarını bir dizi değişken olarak dönderir. ikinci parametresi sonuc döndürme biçimidir.
PDO::FETCH_ASSOC : Sutun isimlerine göre indisli bir dizi dönderir.
PDO::FETCH_BOT : Bir varsayılandır. Hem sütün isimlerine hemde sütun numaralarına göre indislenmiş bir dizi dönderir.
PDO::FETCH_BOUND : Sütün degerlerini bindColumn() ile ilişkilendirilmiş PHP değişkenlerine atar ve TRUE dönderir
PDO::FETCH_INTO : Bir sınıfın örneğini sütun isimlerini sınıf özelliklerini eşleyerek günceller
PDO::FETCH_NUM : Sütun numaralarına göre bir dizi dönderir.
PDO::FETCH_OBJ : Bir sınıfı metotları bir anonim nesne örneği dönderir.
PDO::FETCH_LAZY : PDO::FETCH_OBJ ve PDO::FETCH_BOTH sabitlerinin birleşimidir.
quote() : PDO da exec ve query yapılan baplantırlarda sql enjeksiyonu önlemek için kullanılır.
$sonuc->rowCount() : Gelen verinin satır sayısını öğrenmek için kullanılır.
$db->beginTransaction() : Veri tabanı üzerinde geçici işlemler yapmamızı sağlar. Geçici olarak yapılan işlemler PDO nesne örneği üzerinden veritabanında yapılan değişiklikler commit() çağrısı ile işleme konur. Eğre iptal edilecekse rollBack() ile geri alınır.

 

PHP PDO exec Kullanımı

Exec metodu sql komutlarını hızlı bir şekilde çalışmasını sağlar. Sistemin kendi içerisinde yapcağı kayıtlarda etkin olarak kullanmakta fayda var. Örneğin hata ve log kayıtlarında. Dikkata edilmesi gereken husus ise exec metodu dışarıdan gelen tehtidlere açıktır bu nedenle prepare metodunu dışarıdan gelen verilerde kullanmanızı önririm. Aşağıda örnek bir veri giriş scripti bulunmaktadir.

Diğer bir exec örneği. Bu sefer veri güncellemesi yapıyoruz.

PHP PDO HATA AYIKLAMA

Veri tabanı girdi-çıktılarında her hangi bir hata sonucu sistemin aksamasını istemiyorsak hata ayıklama try metodunu kullanıyoruz.

PHP PDO query() Kullanımı

Veritabanından verileri okumak için query metodunu kullanıyoruz. Dikkat edilmesi gereken dışarıdan gelen verileri quote() metodu uygulanarak zararlı veriler pasifize edilmeli. Ben bu metodu hızlı olması nedeniyle sayfa okumalarından sunucu tarafından gönderilen verilerin basımında kullanıyorum. Dışarıdan gelen verilerde Prepare metodunu öneriyorum.

Her veri tabanı işlemi sonucunda veritabanı bağlantı değişkeni yok ediliyor.

Veri tabanında gelen dizi tipi belirtilmezse? Yani PDO::FETCH_… Metodu kullanılmazsa, sistem standart olarak hem tablo sutun başlıklarına hemde sutun numara sırasına göre verileri getiriyor.

Veri tabanı bağlantısını sonlandırıyoruz.

PHP PDO quote() Kullanımı

Çoklu verilerde ise aşağıdaki gibi kullanılır.

Burada post ile gelen bütün verilere quote() metodunu uyguladık.

________________________________________________________________________

quote() metodu dış verilerde kesinlkle uygulanması gerekmektedir.

PHP PDO PREPARE METODU



-> SQL sorgusunu bir kez yorumlar. Bir çok kez çalıştırma imkanı verir.
-> Yapısında temizleyici bulunduğundan SQL enjektionu önler.
-> SQL sorguları bir kez torumlandığı için genellikle daha hızlıdır.
bindParam() : bindParam metodu prepare ile hazırlanan sql sorgusunda ? işareti veya bir :isim ile belirtilen parametrelerin hazırlanıp değişkenler için tanımlanmasını sağlar
$sonuc->bindParam(parametre,deger,veritipi);
bindParam veri tipleri
PDO::PARAM_INT : Sayıları tanımlamak için kullanılır.
PDO::PARAM_STR : Her türden yazı, harf, sembol vb gibi veriler için kullanılır.
PDO::PARAM_LOB : Binary türü verileri tanımlamak için kullanılır.
PDO::PARAM_INPUT_OUTPUT : Değişkenin bir saklı yordam için bir girdi/çıktı değiştirgesi olduğunu gösterir.
PDO::PARAM_NULL : NULL bir degeri tanımlamak için kullanılır.
execute() : prepare metodu ile hazırlanmış bir SQL deyimini çalıştırır.
bindColumn() : Prepare metodu üzerinden çalıştırılmak üzere SQL deyimini değişkenlere bağlar ve bu değişkenlere göre değer döner.
$sonuc->bindColumn(sütun,degişkne[veritürü[uzunluk[seçenekler]]]);
fetchAll() : prepare() ve execute() ile çalıştırılan bir SQL sorgusuna ait sonuç kümesinin tüm satırlarını içeren bir dizi döndürür.
lastInsertId() : INSERT sorgusu ile eklenen kaydın id nosunu verir.
rowCount() : DELETE INSERT UPDATE gibi sql sorgularından etkilenen satır sayısını verir. SELECT sorgu
PDO::FETC_CLASS : PDO ile bir sınıfın metodu (fonksiyonu) veya özellikleri değişkenleri ilişkilendirilerek kullanılabilir.

______________________________________________________________

execute() Kullanımı

prepare metodu ile hazırlanmış bir SQL deyimini çalıştırır.

Yine excute() metodunu aşağıdaki gibi sadece dizi göndrerekte çalıştırabiliriz.
Dikkat etmiz gereken şey ise sql komuta :parametre ile bilirtiğimiz parametrelerin yerine
soru işareti “?” konuyoruz. Tabi execute metodunda ise soru işareti sırasına göre
gelecek olan değerleri dizi şeklinde sıralıyoruz.

PHP PDO bindColumn() Kullanımı

Bindcolumn ise veri tabanındaki sütünlerin direk ilgili değişkenlere atanmasını
sağlıyor. Bu bize ekran çıktılarını ve tasarımı daha kolay ve hızlı yapmamızı sağlıyor.
Aşağıda cagsoz tablosundaki soz_sahibi, guzel_soz sutunları $soz ve $metin isimli
değişkenlere direk bağlanıyor. Bu değişkenlerin ekran çıktıları veriliyor.

PHP PDO fetcAll() Kullanımı

Veri tabanından gelen verileri döngüye sokup satır satır almak yerine tek seferde
hepsinin alındığı bir dizi göndermesini sağlıyor. Bu komutu genelde class
yazımlarında çok işe yarıyor. Klasdaki metodlarda return ile tek seferde alınıyor.

Yazıyı görüntüle

PHP PDO lastInsertId() ve rowCount() Kullanımı

PHP PDO PDO::FETCH_CLASS Kullanımı

Bu yöntemle arayüzleri sınfılarda hazırlayarak sadece arayüzün adının verilmesiyle sayfanın oluşmasını sağladığımız sistemlerde kullanıyoruz MVC kullanımlarında etkin olarak kullanılmaktadır.

Daha detaylı bilgi çin php.net e bakabilirisiniz.

Başarılar…