PHP Dersleri PDO Kullanımı
PHP ile geliştirilen projenin veritabanı kullanımı açısından güncellenmelerden etkilenmemek veya projenizi sağlam temeller üzerine oturtmak için hayati öneme sahiptir.
mysql_* ile yapılan veritabanı bağlantılarını artık çoğu sunucu desteklemiyor ve bunun yerine mysqli_* kullanmanızı size zorluyor bu aşamada projenizde yüzlerde veritabanı bağlantısı mevcut hepsini tek tek gezerek güncellemek zorundasınız, mysqli_* için güncellediniz peki mysqli_* de kalktığında ne olacak yeni baştan düzenle .
PDO tercih etmenizi gerektirecek diğer bir ana sebeb ise güvenlik , projede aslında en önemli iki etken vardır ; bir güvenlik iki hız. PDO ile işte bu ikisinede sahipsiniz. mysqli_ ile geliştirdiğiniz projelerde tüm olasılıklara karşı sizin önlem almanız gerekir ancak PDO bu işlemi kendi başına yapar . PDO kullanarak geliştirdiğiniz projelerinizde aynı projede dilediğiniz kadar farklı veritabanına hatta farklı veritabanı yapılarına kolaylıkla ulaşım sağlayabilirsiniz.
PDO yu basitçe anlatmak gerekirse veritabanı bağlantısını bir kere yaparsınız sonrasında sürekli 4 fonksiyon üzerinde gezinirsiniz bunlar ; prepare ,query, execute, exec fonksiyonlarıdır. Bu fonksiyonların özellikleri isimlerinde saklı ve anlatırsak ;
Öncelikle PDO MySQL bağlantısını gerçekleştirelim ;
<?php try { $db = new PDO("mysql:host=localhost;dbname=$dbName", "$dbUser", "$dbPass"); $db->query("SET NAMES utf8"); } catch ( PDOException $e ){ print $e->getMessage(); }
prepare
Bu fonksiyon ile veritabanına bir değer kayıt edeceksek bu kayıt edilecek SQL sorgusu ile ön hazırlık sağlanır ve sonrasında execute fonksiyonu ile SQL sorgusunda belirtilen yerler kullanılarak veritabanına kayıt işlemi gerçekleştirilir, bu sorguyu bir değişkene alırız ve execute ederiz, örnek ile açıklamak daha sağlıklı olacak ;
<?php $kayit = $db->prepare("INSERT INTO veri_tablosu (deger1,deger2,deger3) VALUES (:deger1,:deger2,:deger3)");
yukarıdaki örnekte anlaşılacağı üzere deger1 sütünu için execute array içerisinde bu alana değeri koy diyebeleceğimiz değişkene ait tanımlama ismine :deger1 yazarak execute işlemine hazırlık yaptık.
execute
Bu fonksiyon ile prepare ile ön hazırlık yapılan değere dizi şeklinde değerleri veririz ve sonrasında veritabanına insert işlemi gerçekleşmiş olur ;
<?php $kayit->execute(Array( ":deger1" => "sütün 1 içerisindeki değer", ":deger2" => "sütün 2 içerisindeki değer", ":deger3" => "sütün 3 içerisindeki değer" ));
query
Eğer veritabanındaki herhangi bir sütün/sütünlardaki dataları almak istiyorsak bu fonksiyonu kullanırız yani bu fonksiyon ile SELECT işlemleri yapılır, query fonksiyonu ile yapılan işlemlerde eğer kullanacağımız satır sayısı bir adet ise fetch(PDO::FETCH_ASSOC) eğer birden fazla değer gelecekse fetchAll(PDO::FETCH_ASSOC) kullanırız, örnek ile açıklarsak ;
<?php $degerler = $db->query("select * from tablo_adi")->fetchAll(PDO::FETCH_ASSOC);
artık değerler değişkenimizin içinde tablo_adi ile belirtilen tablodaki tüm datalar duruyor ve dizi halinde bu verileri dilediğiniz gibi işleyebilirsiniz, dataları ekrana direk yazdırmak için array_list($degerler) kullanabilirsiniz,
exec
bu fonksiyon ile tek seferlik veritabanı işlemi /eylemi gerçekleştireceksek kullanırız yani UPDATE , DELETE gibi işlemler için kullanılır yani veritabanı ile bir işlem yapılacaksa ve bu yapılacak işlem için dönecek değer sadece true yada false olacak bu fonksiyon kullanılmalıdır ,
if($db->exec("DELETE FROM table_name WHERE some_column = some_value")){ echo 'işlem gerçekleşti'; }
Yazımızı kısaca özetlersek ;
query() | Tek satırlık SQL sorgusu gerçekleştir ön hazırlık gerekmiyor SQL Sorgusunu çalıştır , fetch _> tek satırlık data döndür fetch_> SQL sorgusu içerisinde uyuşan tüm satırları döndür |
prepare() | Gerçekleşecek olan insert , delete , update işlemleri için ön hazırlık yap |
execute() | Ön hazırlığı yapılan SQL sorgusunda ilgili değişkenlere değerleri ata ve işlemi tamamla |
exec() | SQL sorgusu için işlemi gerçekleştir ve sonucunda true/false işlemini döndür. |