Php pdo kullanımı ve pdo sınıfı örneği

Php kullandığımız projelerimizde veritabanı bağlantılarımızı halen mysqli ile sağlıyorsak sql injection yememiz mümkün fakat pdo bunu kendi engelliyor. Hayır mysqli candır diyenler için şöyle alayım o halde >

PDO (PHP Data Objects) kullanmak isteyenler için yazımız devam ediyor. Öncelikle veritabanı bilgilerimizin yer alacağı bir sınıf oluşturalım sonra pdo sınıfımızı bu sınıftan türeterek bağlantımızı sağlayalım.

<?php

class dbDefinations {

    protected $DB_DRIVER = 'pdo_mysql';
    protected $DB_HOST = 'localhost';
    protected $DB_PORT = 3306; //3306 for cpanel or 8889 for mamp
    protected $DB_NAME = 'db_name';
    protected $DB_USER = 'db_username';
    protected $DB_PASS = 'db_userpassword';

}

 ?>

Daha sonrasında ise veritabanına erişimimizi sağlayacak pdo sınıfımızı yaratalım.

<?php
/**
 * dbDefinations.php dosyamızı pdo sınıfımıza gömelim.
 */
require('dbDefinations.php');

class dbConnection extends dbDefinations
{

    /**
     * bağlantı objemizi tanımlayalım.
     *
     * @var PDO
     */
    protected static $db;

    /**
     * private olarak __construct ( kurulum ) fonksiyonumuzu tanımlayalım ki başka yerlerden erişim olmasın.
     *
     * 
     */
    private function __construct()
    {

        try {
            // veritabanı bilgilerimizi üst sınıfımızdan getirelim.
            self::$db = new PDO('mysql:host=' . $this->DB_HOST . ';port=' . $this->DB_PORT . ';dbname=' . $this->DB_NAME, $this->DB_USER, $this->DB_PASS, array(
                PDO::ATTR_PERSISTENT => true
            ));
            self::$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        } catch (PDOException $e) {
            //Hata yakalanırsa ekrana basalım.
            echo "Connection Error: " . $e->getMessage();

        }

    }


    /**
     * bağlantı işlemimiz, static olarak tanımlayalım soyutlamadan erişebilelim.
     *
     * @return PDO
     */
    public static function getConnection()
    {

        if (!self::$db) {
            //bağlantı çın çın.
            new dbConnection();
        }

        //hali hazırda bağlantı varsa yeni oluşturmasın tekrar bağlansın.
        return self::$db;
    }

}

?>

Evet PDO bağlantı sınıfımız hazır güzel güzel projelerinizde kullanmanız dileğimle.

mutluluk sizinle olsun.

Join the ConversationLeave a reply

Your email address will not be published. Required fields are marked *

Comment*

Name*

Website

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.