PDO ile Güvenli ve Hızlı MySQL Veritabanı İşlemleri: Bağlantı, SELECT ve INSERT Örnekleri
PDO (PHP Data Objects) PHP için bir veritabanı erişim katmanıdır. PDO, PHP’nin çeşitli veritabanı sürücüleri ile çalışmasını sağlar, böylece kodunuzun veritabanı sistemi tarafından bağımlı olmamasını sağlar. PDO, MySQL, PostgreSQL, Oracle, MS SQL Server, SQLite gibi veritabanları için sürücüler sunar.
PDO, sorguların ve verilerin güvenliğini sağlamak için güvenli bir yol sunar. Örneğin, PDO, SQL enjeksiyonu gibi güvenlik açıklarını önlemek için veri bağlamasını destekler. Veri bağlama, SQL sorgularına değişkenleri eklemeden önce verileri temizler, böylece kullanıcı tarafından sağlanan verilerin SQL sorgusuna zararlı kod eklemesi engellenir.
Ayrıca, PDO, hız konusunda da avantajlıdır. Örneğin, PDO, veritabanı bağlantısını sürekli açık tutmaz, ancak sadece gerektiğinde bağlantıyı açar ve kapatır. Bu, veritabanı sunucusuna yükü azaltır ve hızı arttırır.
Aşağıdaki örnekte, PDO kullanarak MySQL veritabanına bağlanıp, “SELECT * FROM users” sorgusunu çalıştırıyoruz.
<?php // Veritabanı bağlantısını tanımla $dsn = 'mysql:dbname=veritabani_adi;host=127.0.0.1'; $kullanici_adi = 'kullanici_adi'; $sifre = 'sifre'; try { // PDO nesnesini oluştur $db = new PDO($dsn, $kullanici_adi, $sifre); } catch (PDOException $e) { echo 'Bağlantı başarısız: ' . $e->getMessage(); exit; } // Sorguyu hazırla $sorgu = $db->prepare('SELECT * FROM users'); // Sorguyu çalıştır $sorgu->execute(); // Sonuçları al $kullanicilar = $sorgu->fetchAll(); // Sonuçları ekrana yazdır foreach ($kullanicilar as $kullanici) { echo $kullanici['isim'] . '<br>'; }
Bu örnekte, PDO kullanarak MySQL veritabanına bağlanıp, “SELECT * FROM users” sorgusunu çalıştırıyoruz. İlk olarak veritabanı bağlantısını tanımlıyoruz, dsn, kullanici_adi ve sifre değişkenleri ile. PDO nesnesini oluştururken dsn, kullanici_adi ve sifre değişkenlerini kullanıyoruz. Eğer bağlantı başarısız olursa hata mesajını ekrana yazdırıyoruz ve işlem sonlandırıyoruz. Sonrasında sorguyu hazırlıyoruz ve çalıştırıyoruz, sonuçları fetchAll() fonksiyonu ile alıp ekrana yazdırdık.
Aşağıda ki örnekte de INSERT işleminin nasıl yapıldığını basit bir kod parçası ile inceleyelim .
<?php // Veritabanına yeni kullanıcı ekleme $isim = "John Doe"; $email = "johndoe@example.com"; $sifre = password_hash("password", PASSWORD_DEFAULT); // Veri bağlama kullanarak sorguyu hazırla $eklemeSorgusu = $db->prepare("INSERT INTO users (isim, email, sifre) VALUES (:isim, :email, :sifre)"); // Değişkenleri sorguya bağla $eklemeSorgusu->bindParam(':isim', $isim); $eklemeSorgusu->bindParam(':email', $email); $eklemeSorgusu->bindParam(':sifre', $sifre); // Sorguyu çalıştır $eklemeSorgusu->execute(); // Etkilenen satır sayısını al $satirSayisi = $eklemeSorgusu->rowCount(); if ($satirSayisi > 0) { echo "Yeni kullanıcı başarıyla eklendi."; } else { echo "Kullanıcı ekleme işlemi başarısız oldu."; }
Bu kod bloğunda, PDO kullanarak veritabanına yeni bir kullanıcı ekliyoruz. Öncelikle, ekleme sorgusunu hazırlıyoruz ve sorguya değişkenleri veri bağlama yöntemi ile ekliyoruz. Daha sonra sorguyu çalıştırıyoruz ve ekleme işleminin başarılı olup olmadığını kontrol etmek için etkilenen satır sayısını alıyoruz. Bu örnekte, isim, email ve sifre değişkenleri kullanılmıştır ve bunlar veritabanındaki sütunlar ile eşleştirilmiştir. Ayrıca şifrelerin hash’lenerek saklandığını unutmayın.