PHP Programlama Dilinde Veri Tabanı Bağlantısı
PHP, web geliştirme dünyasında yaygın olarak kullanılan, sunucu taraflı dinamik içerik üretme dili olarak öne çıkar. Veri tabanı bağlantısı ise PHP ile etkileşimli ve veri odaklı web uygulamaları geliştirmek için temel gereksinimdir. PHP’de veri tabanı bağlantısı kurmak, verilerin okunması, yazılması ve yönetilmesi işlemlerinin temelini oluşturur.
PHP’de Veri Tabanı Bağlantısı Yöntemleri
PHP’de en çok kullanılan veri tabanı yönetim sistemi MySQL’dir. MySQL bağlantısı için birkaç yöntem bulunur:
1. MySQLi (MySQL Improved) Uzantısı
MySQLi, PHP’de MySQL veri tabanına bağlanmak için geliştirilmiş ve MySQL’in gelişmiş özelliklerini destekleyen bir eklentidir. Hem prosedürel hem nesne yönelimli programlama (OOP) biçiminde kullanılabilir.
Prosedürel Örnek:
$servername = "localhost";
$username = "kullanici_adi";
$password = "sifre";
$dbname = "veritabani_adi";
// Bağlantı oluşturma
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Bağlantı kontrolü
if (!$conn) {
die("Bağlantı başarısız: " . mysqli_connect_error());
}
echo "Bağlantı başarılı!";
2. PDO (PHP Data Objects)
PDO, farklı veri tabanı sistemlerini destekleyen, esnek ve güvenli bir veri tabanı bağlantı arabirimidir. Aynı kod yapısı ile MySQL, PostgreSQL, SQLite gibi birçok veri tabanına bağlanmayı sağlar. Ayrıca parametrik sorgu desteği ile SQL enjeksiyon saldırılarına karşı daha güvenlidir.
PDO Örneği:
$dsn = "mysql:host=localhost;dbname=veritabani_adi;charset=utf8";
$username = "kullanici_adi";
$password = "sifre";
try {
$pdo = new PDO($dsn, $username, $password);
// Hata modu ayarlanması
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Bağlantı başarılı!";
} catch (PDOException $e) {
echo "Bağlantı hatası: " . $e->getMessage();
}
Veri Tabanı Bağlantısında Dikkat Edilmesi Gerekenler
1. Güvenlik Önlemleri
- Kullanıcı adı ve şifre gibi kritik bilgiler kod içerisinde doğrudan yer almamalı, çevresel değişkenlerde veya yapılandırma dosyalarında tutulmalıdır.
- Parametrik sorgular ve hazırlıklı ifadeler (prepared statements) kullanılmalı, SQL enjeksiyonları engellenmelidir.
- PDO kullanımı, güvenlik açısından MySQLi’ye göre daha avantajlıdır.
2. Hata Yönetimi
- Bağlantı ve sorgu hataları yakalanmalı, kullanıcıya gereksiz teknik bilgi verilmeden uygun hata mesajları gösterilmelidir.
- Loglama sistemleri ile hata kayıtları tutulmalı, sorunların takibi kolaylaştırılmalıdır.
3. Karakter Seti Ayarı
- Veri tabanı bağlantısında UTF-8 gibi evrensel karakter setlerinin kullanılması, uluslararası karakter desteği sağlar ve veri kayıplarını önler.
Basit Veri Tabanı Sorgusu Örneği (PDO ile)
try {
$pdo = new PDO($dsn, $username, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $pdo->prepare("SELECT * FROM kullanicilar WHERE durum = :durum");
$stmt->execute(['durum' => 'aktif']);
$sonuclar = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($sonuclar as $row) {
echo "Kullanıcı: " . htmlspecialchars($row['isim']) . "<br>";
}
} catch (PDOException $e) {
echo "Sorgu hatası: " . $e->getMessage();
}
PHP ve Veri Tabanı Bağlantısında Performans
- Bağlantı nesneleri mümkün olduğunca yeniden kullanılmalı, sürekli açıp kapatılmamalıdır.
- Büyük veri sorguları için sayfalama (pagination) uygulanmalıdır.
- Sorgular optimize edilmeli, gereksiz veri çekmekten kaçınılmalıdır.
Anahtar Kelimeler: PHP veri tabanı bağlantısı, MySQLi, PDO, SQL enjeksiyonu, veri tabanı güvenliği, parametrik sorgu, hata yönetimi, PHP veri tabanı sorguları
Uyarı: Bu makale PHP programlama ve veri tabanı yönetimi ile ilgilidir. PHP’de veri tabanı bağlantısı kurulumu ve yönetimi sırasında mutlaka deneyimli bir yazılım geliştirici veya veri tabanı uzmanına danışılması önerilir.