Merhaba arkadaşlar bu yazımda PHP PDO ya genel bir giriş yapacağız. PDO PHP’de veritabanı işlemleri yapmamızı sağlayan bir kütüphanedir ve genel olarak bir çok SQL Injection açığı gibi açıklara karşı güvenli olacak şekilde hazırlanmıştır fakat tabi ki bu tarz açıklardan korunmak için kendi önlemlerinizide almalısınız tam olarak güvenliği sağlamak hine sizin elinizde.

Bu yazımı şu başlıklar altında inceleyeceğim.

  • PDO ile Veritabanı Bağlantısı
  • PDO ile Sorgular Nasıl Yazılır

Bildiğiniz üzere MySQL ile alakalı şu zamana kadar hazırlamış olduğum yazılarımı tamamladım ve genel olarak PDO ile nasıl bir sorguların yapılacağından bahsedecek olsam bile çok detaya inmeyeceğim.

PDO ile Veritabanı Bağlantısı

PDO ile Veritabanı bağlantısı yapmak basittir. Tek yapmanız gereken

$db = new PDO("mysql:host=localhost;dbname=veritabani_adi;charset=utf8", "kullanici-adi", "sifre");

alanında ki boş alanları doldurmak olacaktır. Ben kendi bilgisayarım da lokal sunucuma bağlanmak için kullandığım bir PDO bağlantısından örnek vermek gerekirse

$db = new PDO("mysql:host=localhost;dbname=test;charset=utf8", "root", "root");

şeklinde olacaktır. Bu kodları try – catch blokları içinde şu şekilde kullanıyorum.

try{    
    $db = new PDO("mysql:host=localhost;dbname=test123123;charset=utf8", "root", "root");
}
catch (PDOException $e){
    echo $e->getMessage();
}

şeklindedir. Mesela try-catch blokları arasında ki PDO Bağlantısında veritabanı adını yanlış girdim karşıma çıkacak hata şu şekildedir.

PDO ile Sorgular Nasıl Yazılır

PDO ile sorgu yazmak aslında basittir. Bunun iki farklı yöntemi olur biri direkt olarak query komutunu kullanmak ya da önce prepare edip daha sonra execute ederek sorgumuzu çalıştırmak bu iki yöntemden de detaylı bir şekilde bahsetmek gerekirse

1. Yöntem

Bu yöntem direkt query komutunu kullanarak sql sorgumuzu çalıştırmaktır ve bu yöntemin gerekli önlemler alınmazsa çok güvensiz bir yöntem olduğunu söylemeliyim. Peki nasıl bu yöntem ile sorgu çalıştırırız.

$db->query('SELECT * FROM tablo_adi WHERE id=1');

Bu sorgu da tablomuz daki id değeri 1 olan satırı ekrana yazdırmasını istedik buradaki “1” değerini kullanıcıdan aldığımızı varsayarsak çok güzel bir şekilde SQL INJECTION açığını kullanarak sistemimizde ki tablolara tam olarak erişim sağlamış oluruz.

2. Yöntem

Bu yöntem ise önce sorgumuzu hazırlayıp(prepare) daha sonra ise işleme(execute) ile çalışır. Yukarı da verdiğimiz örneği prepare-execute yöntemi ile şu şekilde yapabilirdik.

$sorgu = $db->prepare('SELECT * FROM tablo_adi WHERE id = ?');
$sorgu->execute([1]);

bu şekilde yaptığımız da bir kaç satır fazla kod yazıyoruz bazen neye karşılık neyin geleceğini konusunda uğraştırıcı oluyor fakat genel olarak sistemimiz SQL INJECTION açığından arınmış oluyor.

Özet,

Bu yazımda sizlerle birlikte PHP PDO konusuna giriş yapmış olduk. İleri ki bir kaç yazım PDO ile alakalı olacak olsa bile genel olarak MySQL yazılarımı inceleyerek PDO’yu kullanabilirsiniz.

Bir sonraki yazımda PDO ile CRUD İşlemlerinden bahsedeceğim. O zamana kadar PHP hakkında yazılarımı okumak için buraya, MySQL hakkında yazdıklarım için buraya tıklamalısınız. Ayrıca PDO kütüphanesini detaylı incelemek isterseniz buraya tıklayınız.