Hepinize hayırlı geceler, sizlere şimdi php programlama dili ile veritabanı (mysql) bağlantısını nasıl yapabileceğinizi göstereceğim. PHP 5 ve sonraki sürümlerde MySQL veritabanı bağlantısı için 2 metot bulunmaktadır. Bunlar;
- MySQLi eklentisi (i improved yani gelişmiş anlamına gelir)
- PDO (PHP Data Objects yani PHP Veri Nesneleri)
Önceki PHP versiyonları MySQL eklentisini (dikkat ederseniz MySQLi değil) kullanmaktaydı. Fakat bu yaklaşım, bu metot 2012 yılında artık kaldırıldı ve yukarıda bahsettiğimiz 2 metot ortaya çıktı.
Hangisini kullanmalıyım?
Bu soruya kısa bir cevap vermek gerekirse; “Hangisini isterseniz”.
Her iki yöntemin de kendine göre avantajları var. Örneğin, PDO 12 farklı veri tabanı sistemiyle birlikte çalışabilirken, MySQLi sadece MySQL veritabanlarıyla çalışabilir. Yani, kullanacağınız bir projede bir süre sonra veritabanı değişikliği yapılacaksa, PDO kullanmak daha avantajlı. Sadece bağlantı satırını ve birkaç sorguyu değiştirmeniz yeterli olacak. Fakat MySQLi ile durum öyle değil. Tüm kodları yeniden yazmak gerebilir üstelik sorgular dahil.
Her iki yöntem de nesne-yönelimli fakat MySQLi bir de nesne-yönelimli olmayan API desteği sunmakta. Her iki yöntem de Prepared Statements desteği verir yani SQL injection yöntemiyle yapılabilecek saldırılara karşı korur.
Bağlantı Örnekleri
Eğer kodumuz çalışıyor bağlantıyı başarılı bir şekilde gerçekleştiriyorsa hiçbir hata vermeyecektir. Bu nedenle biz bir uyarı yapalim ki kodun çalışıp çalışmadığını test edebilelim. Aşağıdaki kodu inceleyiniz, klasik if yapısıdır. Eğer $baglan değişkeni 1 değeri döndürüyorsa çalışacak ve “Bağlantı Sağlandı” yazacaktır. Kodun tamamı ve ekran çıktısı aşağıdadır.
Örnek 1 - MySQLi Nesne Yönelimli
<?php
$servername = "localhost";
$username = "root";
$password = "";
$database = "cnrcnbz";
$conn = new mysqli($servername, $username, $password, $database);
if ($conn->connect_error) {
die("Bağlantı sağlanamadı: " . $conn->connect_error);
}
echo "Baglanti saglandi";
?>
Not: Eğer PHP 5.2.9 veya 5.3.0den önceki sürümleri kullanıyorsanız, hata kontrolünü aşağıdaki şekilde yapınız.
if (mysqli_connect_error()) {
die("Database connection failed: " . mysqli_connect_error());
}
Örnek 2 - MySQLi Prosedürel
<?php
$servername = "localhost";
$username = "root";
$password = "";
$database = "cnrcnbz";
$conn = mysqli_connect($servername, $username, $password, $database);
if (!$conn) {
die("Bağlantı sağlanamadı: " . mysqli_connect_error());
}
echo "Baglanti saglandi";
?>
Örnek 3 - PDO Nesne Yönelimli
<?php
$servername = "localhost";
$username = "root";
$password = "";
$database = "dbname";
try {
$conn = new PDO("mysql:host=$servername;dbname=$database", $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Baglanti saglandi";
}
catch(PDOException $e)
{
echo "Bağlantı sağlanamadı: " . $e->getMessage();
}
?>
Not: Paylaştığım kod temel bir bağlantı kodudur, amaç mantığı anlamaktır yani güvenlik açıkları olabilir. Oluşabilecek zararlardan mes’ul değilim.