PHP 5 ve daha sonraki sürümlerde, bir MySQL veritabanı ile çalışırken aşağıdaki seçeneklerden birini kullanabilirsiniz:
MySQLi uzantısı PDO (PHP Veri Nesneleri - PHP Data Objects)
1. PDO 12 farklı veritabanı sisteminde, MySQLi ise sadece MySQL veritabanı üzerinde çalışır.
2. PDO kullanılarak yapılan projeleri farklı bir veritabanına taşımak biraz daha kolay iken, MySQLi kullandığınızda tüm kodları yeniden yazmanız gerekebilir.
3. Her ikisi de nesneye dayalıdır. MySQLi aynı zamanda fonksiyonel API kullanma seçneği sunar.
4. Her ikisi de SQL injection'dan koruma sağlayarak daha güvenli web uygulamaları geliştirilmesini sağlayan Hazırlanmış İfadeleri (Prepared Statements) destekler.
MySQLi ile PDO'nun, Php ile birlikte kurulup kurulmadığını kontrol ediniz.
1. MySQLi nesneye dayalı yöntem ile
<?php
$sunucu = "localhost";
$kullanici = "kullanıcıadı";
$parola = "parola";
// Bağlantı oluşturma
$bag = new mysqli($sunucu, $kullanici, $parola);
// Bağlantı kontrolü
if ($bag->connect_error) {
die("Bağlantı hatası: " . $bag->connect_error);
}
echo "Bağlantı sağlandı!";
$bag->close();
?>
Yukarıdaki örnekteki kodlar, önce mysqli sınıfından oluşturduğu nesneye geçirdiği sunucu adı, kullanıcı adı ve parola değerleri ile bir bağlantı oluşturarak $bag değişkenine atar. connect_error değişkenini kontrol ederek bağlantının sağlanıp sağlanmadığını kontrol eder. close() fonksiyonu ile bağlantı kapatılır.
2. MySQLi fonksiyonel yöntem ile
<?php
$sunucu = "localhost";
$kullanici = "kullanıcıadı";
$parola = "parola";
// Bağlantı oluşturma
$bag = mysqli_connect($sunucu, $kullanici, $parola);
// Bağlantı kontrolü
if (!$bag) {
die("Bağlantı hatası: " . mysqli_connect_error());
}
echo "Bağlantı sağlandı!";
mysqli_close($bag);
?>
Yukarıdaki örnekteki kodlar, önce mysqli_connect() fonksiyonuna geçirdiği sunucu adı, kullanıcı adı ve parola değerleri ile bir bağlantı oluşturarak $bag değişkenine atar. $bag değişkenini kontrol ederek bağlantının sağlanıp sağlanmadığını kontrol eder. EĞer bağlantı hatası varsa, mysqli_connect_error() fonksiyonu ile ekrana yazar. mysqli_close fonksiyonu ile bağlantı kapatılır.
3. PDO yöntemi ile
<?php
$sunucu = "localhost";
$kullanici = "kullanıcıadı";
$parola = "parola";
try {
$bag = new PDO("mysql:host=$sunucu;dbname=veritabaniadi", $kullanici, $parola);
// PDO hata modunu istisnaya ayarlama
$bag->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Bağlantı sağlandı!";
}
catch(PDOException $e) {
echo "Bağlantı hatası: " . $e->getMessage();
}
$bag = null;
?>
Yukarıdaki örnekteki kodlar, önce PDO sınıfından oluşturduğu nesneye geçirdiği sunucu adı, kullanıcı adı, parola ve veritabanı adı değerleri ile bir bağlantı oluşturarak $bag değişkenine atar. setAttribute() fonksiyonu ile hata modu istisna durumuna ayarlanır. Eğer bir hata meydana gelirse, catch yapısı devreye girerek hatayı ekrana yazar. $bag değişkenine null değer atanarak bağlantı kapatılır.
PDO yöntemi ile sağlanan bağlantılarda mutlaka veri tabanı adı kullanılmalıdır. Aksi takdirde, kodlar hata verir.