Bu makalede “PHP Data Object (PDO)” konusunu anlatacağım ve Mysql bağlantısıyla ilgili örnekler yapacağım.
PHP kendi sitesinde mysql fonksiyonlarının sayfasında aşağıda ki öneriyi veriyor.
“This extension is not recommended for writing new code. Instead, either the mysqli or PDO_MySQL extension should be used. See also the MySQL API Overview for further help while choosing a MySQL API.”
Kısacası artık bunları kullanmamızı önermiyor. PDO veya MySqli kullanmamızı istiyor. PDO ile Mysqli arasında pek fark olmadığını söyleyebilirim. PHP kendi sitesinde de bu karşılaştırmaya yer veriyor.
http://www.php.net/manual/tr/mysqlinfo.api.choosing.php
PDO ile sadece Mysql veritabanı kullanılır gibi yanlış bilgileri görüyorum bazı forumlarda. Bu kesinlikle yanlış bilgidir.
PDO ile kullanabileceğiniz veritabanı listesi
- FreeTDS / Microsoft SQL Server / Sybase
- Microsoft SQL Server / SQL Azure
- IBM DB2
- IBM Informix Dynamic Server
- PostgreSQL
- SQLite 3 and SQLite 2
- Cubrid
- Oracle Call Interface
- ODBC v3 (IBM DB2, unixODBC and win32 ODBC)
- MySQL 3.x/4.x/5.x
- Firebird/Interbase 6
PDO ile yukarıda listelenen veritabanlarını kullanabilirsiniz. Yani mysql ile bir uygulama yaptınız ve daha sonra mysql yerine PostgreSQL kullanmak istediniz. Bu durumda tek yapacağınız şey bağlantı cümlesini değiştirmek olacaktır.
Birçok sitede PDO ile mysql bağlantısı, sorgu yazma vs diye ayrıntılı olarak anlatılıyor. Ben bunu yapmayacağım. Sizlere PDO için yazdığım veritabanı yardımcısını vereceğim ve bütün veritabanı işlemlerimi bu yardımcı üzerinden gerçekleştireceğiz. Yaptığım veritabanı yardımcısıyla temel veritabanı işlemlerimizi yapabileceğiz daha detaylı işlemler için tıklayınız.
Temel veritabanı işlemleri ;
• Select,
• Insert,
• Update,
• Delete Evet artık işlemlere geçebiliriz.
Öncelikle veritabanı yardımcısını aşağıda ki linke tıklayarak alabilirsiniz.
Örneğin Mysqlde ki tablomuzun adı “ogrenciler” olsun ve “OgrenciID, OgrenciAdiSoyadi, DogumYili” diye 3 adet kolon olsun. Bu tabloya göre örneklere geçelim.
İlk olarak PDO ile kayıt ekleme (insert) işlemini yapalım.
// İlk olarak indirdiğimiz veritabanı sınıfını sayfaya dahil ediyoruz. include ("pdo_db_helper.php"); // 3 adet değişken oluşturup örnek değerler veriyorum. $adi = "Serdar"; $soyadi = "Karaca"; $dogumyili = "1989"; // Veritabanı yardımcısını başlatıyorum. $DB = new DB_Class(); // DB_Class'ı başlatıyorum. // "DB_Class" adı size verdiğim DB yardımcı dosyasında ki class adıdır. $_result = $DB->insert("ogrenciler", array( "OgrenciAdiSoyadi" => $adi . " " . $soyadi, "DogumYili" => $dogumyili )); if ($_result) { echo "Success"; } else { echo "Failed"; } /* İşlem başarılı olursa ekrana "Success", başarısız olursa "Failed" yazacaktır. */
PDO ile veritabanından veri çekme (SELECT)
include ("pdo_db_helper.php"); $DB = new DB_Class(); // DB_Class'ı başlatıyorum. $Query = $DB->select("*","ogrenciler"); // select * from ogrenciler sorgusunun bizim sınıfımıza uygun hali. if ($Query != null) // Sorgu sonucu boş değilse foreach ($Query as $Data) { echo $Data[OgrenciAdiSoyadi]. " - " .$Data[DogumYili]; //Öğrenci adı soyadı ve doğum yılı bilgisi ekrana yazdırıyoruz. }
PDO ile veritabanından veri çekme (SELECT + WHERE)
/* tabloda birden fazla kayıt olduğunu varsayarak bu örneği yapıyorum. */ include ("pdo_db_helper.php"); $_isimsoyisim = "Serdar KARACA"; $_dogumyili = "1989"; $DB = new DB_Class(); // DB_Class Başlatıyorum. $arr = array("parametre_1"=>$_isimsoyisim,"parametre_2"=>$_dogumyili); //Parametrelerimi bir array içerisine aktarıyorum. $Query = $DB->select("*", "ogrenciler", "WHERE OgrenciAdiSoyadi=:parametre_1 and DogumYili=:parametre_2", $arr); // Öğrenci adı soyadı ve doğum yılı filtrelerini ekledik. // Select * from ogrenciler Where OgrenciAdiSoyadi = 'Serdar KARACA' and DogumYili = '1989' sorgusunun bizim sınıfımıza uygun hali. if ($Query != null) foreach ($Query as $Data) { echo $Data[OgrenciAdiSoyadi]. " - " .$Data[DogumYili]; //Öğrenci adı soyadı ve doğum yılı bilgisi ekrana yazdırıyoruz. }
PDO ile veritabanında veri güncelleme (UPDATE)
include ("pdo_db_helper.php"); $_yeni_isimsoyisim = "Ahmet Mutlu"; $_dogumyili = "1989"; $DB = new DB_Class(); // DB_Class başlatıyorum. $_result = $DB->update("ogrenciler", array( "OgrenciAdiSoyadi" => $_yeni_isimsoyisim ), "DogumYili=".$_dogumyili ); /* update from ogrenciler SET OgrenciAdiSoyadi = $_yeni_isimsoyisim WHERE DogumYili = $_dogumyili sorgusunun bizim sınıfımıza uygun hali. */ if($_result) { echo "Success"; // Sonuç başarılı olursa ekrana "Success" yazacaktır. } else { echo "Failed"; // Sonuç başarılı olursa ekrana "Failed" yazacaktır.
PDO ile veritabanında veri silme (DELETE)
include ("pdo_db_helper.php"); $_yeni_isimsoyisim = "Ahmet Mutlu"; $_dogumyili = "1989"; $$DB = new DB_Class(); // DB_Class Başlatıyorum. $DB->delete("ogrenciler","DogumYili=".$_dogumyili); // Delete from ogrenciler WHERE DogumYili = $_dogumyili sorgusunun bizim sınıfımıza uygun hali. header("Location: index.php); // işlem sonunda index.php sayfasına yönlendiriyoruz.
PDO konusu tabiki bu kadar kısa değil.
İlerleyen zamanlarda bu veritabanı yardımcısıyla daha gelişmiş sorgular yazmayı anlatacağım. Örneğin birden fazla tablo ile nasıl join kullanarak select yapabiliriz gibi.