PHP’de MySQL Bağlantı Örnekleri
PHP, web tabanlı uygulamalar geliştirmek için yaygın olarak kullanılan bir sunucu tarafı betik dilidir. Veritabanı yönetimi için MySQL ile sıkça beraber kullanılır. Bu makalede, PHP ile MySQL veritabanına {nasıl} bağlanabileceğinizi çeşitli örneklerle açıklayacağız.
İçerik Başlıkları
1. MySQLi Kullanarak Bağlantı
1.1. MySQLi ile Bağlantı Kurma
MySQLi (MySQL Improved), MySQL veritabanına bağlantı sağlamak için geliştirilmiş bir PHP eklentisidir. İşte temel bir bağlantı örneği:
php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "kontrol";
// Bağlantı oluştur
$conn = new mysqli($servername, $username, $password, $dbname);
// Bağlantıyı denetim et
if ($conn->connect_error) {
die("Bağlantı hatası: " . $conn->connect_error);
}
echo "Bağlantı başarı göstermiş";
?>
1.2. Hazırlanmış İfadeler (Prepared Statements) Kullanma
Hazırlanmış ifadeler, SQL enjeksiyon saldırılarına karşı koruma sağlar. İşte bir örnek:
php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "kontrol";
// Bağlantı oluştur
$conn = new mysqli($servername, $username, $password, $dbname);
// Bağlantıyı denetim et
if ($conn->connect_error) {
die("Bağlantı hatası: " . $conn->connect_error);
}
// Hazırlanmış ifade ve parametre bağlama
$stmt = $conn->prepare("SELECT id, name FROM users WHERE email = ?");
$stmt->bind_param("s", $email);
// Parametreyi ayarla ve sorguyu çalıştır
$email = "example@example.com";
$stmt->execute();
// Neticeleri al
$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
echo "id: " . $row["id"] . " - Name: " . $row["name"] . "
";
}
$stmt->close();
$conn->close();
?>
2. PDO (PHP Data Objects) Kullanarak Bağlantı
PDO, değişik veritabanlarına bağlantı sağlamak için kullanılan bir PHP eklentisidir. MySQL’e bağlantı oluşturmak için de kullanılabilir.
2.1. PDO ile Bağlantı Kurma
İlk olarak, PDO ile temel bir bağlantı örneği:
php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "kontrol";
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
// Hata modu ayarla
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Bağlantı başarı göstermiş";
} catch(PDOException $e) {
echo "Bağlantı hatası: " . $e->getMessage();
}
?>
2.2. Hazırlanmış İfadeler (Prepared Statements) Kullanma
PDO ile hazırlanan ifadeler şu şekilde kullanılabilir:
php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "kontrol";
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $conn->prepare("SELECT id, name FROM users WHERE email = :email");
$stmt->bindParam(':email', $email);
$email = "example@example.com";
$stmt->execute();
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
echo "id: " . $row["id"] . " - Name: " . $row["name"] . "
";
}
} catch(PDOException $e) {
echo "Bağlantı hatası: " . $e->getMessage();
}
?>
3. Eski MySQL Uzantısı ile Bağlantı (Kullanılması Önerilmez)
Eski mysql_*
fonksiyonları artık PHP’de önerilmemekte ve PHP 7 ile beraber tamamen kaldırılmıştır. Güvenlik ve performans açısından mysqli
yada PDO
kullanılması tavsiye edilir. Gene de eski yöntemle {nasıl} bağlantı kurulduğunu göstermek için bir örnek verelim:
php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "kontrol";
// Bağlantı oluştur
$conn = mysql_connect($servername, $username, $password);
// Bağlantıyı denetim et
if (!$conn) {
die("Bağlantı hatası: " . mysql_error());
}
// Veritabanını seç
mysql_select_db($dbname);
// Sorgu gönder
$result = mysql_query("SELECT id, name FROM users WHERE email = 'example@example.com'");
// Neticeleri al ve ekrana yazdır
while ($row = mysql_fetch_assoc($result)) {
echo "id: " . $row["id"] . " - Name: " . $row["name"] . "
";
}
// Bağlantıyı kapat
mysql_close($conn);
?>
Yukarıdaki örneklerde, PHP’nin MySQL veritabanına {nasıl} bağlandığını ve değişik yöntemlerle {nasıl} sorgular yürüttüğünü gördük. Çağıl uygulamalar için mysqli
yada PDO
kullanmanız önerilir, bundan dolayı eski mysql_*
fonksiyonları artık desteklenmemekte ve güvenli değildir.