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.