Php ile az da olsa ilgilendiyseniz, ki bu yazıyı okuyorsanız ilgilenmeme gibi bir ihtimaliniz yok. Pdo’yu duymuş olabilir ya da biliyor olabilirsiniz. Ben de bu yazımda Pdo’nun ne olduğundan ve biraz da kullanımından bahsedeceğim.
Pdo(Php Data Objects-Php Veri Objeleri), güvenli ve tutarlı bir şekilde veritabanı sistemlerine erişmemizi sağlayan programlama dili eklentisidir. Php, mysql_query() gibi fonksiyonlarının bulunduğu eklentisini deprecated(kullanımdan kaldırmak) ilan etti. Bunun üzerine ortaya kullanmak üzere 2 seçenek çıktı mysqli fonksiyonları ya da birçok veritabanı ile çalışabilen PDO. Aşağıdaki veritabanlarının hepsini pdo desteklemektedir.
Pdo ile bir veritabanı bağlantısı kuracağımız zaman ilk olarak veritabanı sistemimizi daha sonra sunucu adresimizi, veritabanı adımızı son olarak da kullanıcı adı ve şifremizi belirtip bağlantımızı kurmuş oluyoruz. Aşağıdaki kod bloğunda da gördüğünüz gibi try{} catch(){} yapısını kullanarak bir veritabanı bağlantısı yapabiliriz.
try {$baglan = new PDO('mysql:host=localhost;dbname=veritabani;charset=utf8', 'kullaniciAdi', 'sifre');}
catch(PDOException $e) { echo $e->getMessage(); }
Sorgularımızı yaparken dikkat etmemiz gereken bir nüans vardır. Kullanıcıdan bir veri alıyor muyuz yoksa almıyor muyuz eğer almıyorsak query() metodu ile sorgumuzu gerçekleştiririz, sorgumuzu yaparken kullanıcıdan aldığımız veriye ihtiyacımız var ise sorgumuzu prepare() metodu ile gerçekleştiriyoruz zira bu şekilde yapmazsak SQL injection dediğimiz açığa maruz kalabiliriz.
Bahsettiğimiz iki senaryoya da örnek olarak birer ‘SELECT’ sorgusu yapalım;
$sorgu = $baglan->query("SELECT * FROM tablo");
$id = $_GET['id'];
$sorgu = $baglan->prepare("SELECT FROM tablo WHERE id = :id");
$sorgu->execute(array('id' => $id));
Gördüğünüz gibi query() metodu ile dümdüz SQL sorgusu yazdık lakin prepare() metodunda önce sorgumuzda kullanmak istediğimiz değişkenler yerine “?” veya “:x” şeklinde ibareler koyuyoruz. Koyduğumuz bu ibarelerin hangi değişkenleri temsil ettiğini ise execute() metodunda belirtiyoruz.
“?” koyduysak execute() metodu içerisinde direkt değişkenimizi belirtiyoruz.
“:x” şeklinde bir ifade kullandıysak execute() metodu içerisinde key value mantığında bir bildirim yapıyoruz “:x => $degisken” gibi.
Pdo’da anlatılması gereken çok konu var lakin benim bahsetmek istediklerim pdo ve temel kullanımıydı.