PHP - MySQL Bağlantısı (MySQL Connection)
PHP sayfalarında veritabanı kullanmak için web sunucusu üzerinden MySQL sunucusuna bağlantı kurulur.
Eski kaynaklarda geçen mysql_connect(), mysql_query() gibi fonksiyonlar artık kaldırılmıştır.
Güncel ve güvenli yöntemler: PDO (önerilir) veya MySQLi.
Önemli (Güncelleme)
mysql_connect(), mysql_select_db(), mysql_query(), mysql_fetch_row()
gibi mysql_* fonksiyonları modern PHP sürümlerinde çalışmaz.
Bu sayfada aynı işlemler PDO ve MySQLi ile güncellenmiştir.
1) PDO ile MySQL Bağlantısı (Önerilen)
PDO; güvenlik (hazırlanmış sorgular), taşınabilirlik ve hata yönetimi açısından en yaygın modern çözümdür.
Örnek: PDO bağlantı + hata yönetimi
<?php
$host = "localhost";
$db = "veritabani_adi";
$user = "root";
$pass = "sifre";
$charset = "utf8mb4";
$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
$options = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false,
];
try {
$pdo = new PDO($dsn, $user, $pass, $options);
echo "Bağlantı başarılı!";
} catch (PDOException $e) {
die("Bağlantı hatası: " . $e->getMessage());
}
?>
2) PDO ile Sorgu Çalıştırma (SELECT)
Eski örnekteki SELECT ad, soyad FROM tablo1 sorgusunu PDO ile yapalım.
Örnek: PDO query + foreach
<?php
// $pdo daha önce oluşturulmuş olsun.
$sql = "SELECT ad, soyad FROM tablo1";
$stmt = $pdo->query($sql);
foreach ($stmt as $row) {
echo $row["ad"] . " " . $row["soyad"] . "<br>";
}
?>
Not
Eski
mysql_fetch_row() yerine PDO’da genelde FETCH_ASSOC ile alan adlarıyla erişmek daha okunur olur.
3) Güvenli Sorgu: Prepared Statement
Kullanıcıdan gelen verilerle sorgu yaparken hazırlanmış sorgu kullanmalısın (SQL Injection riskini azaltır).
Örnek: WHERE ile filtreleme (prepared)
<?php
$aranan = "Mehmet"; // örnek
$sql = "SELECT ad, soyad FROM tablo1 WHERE ad = :ad";
$stmt = $pdo->prepare($sql);
$stmt->execute(["ad" => $aranan]);
$rows = $stmt->fetchAll();
foreach ($rows as $row) {
echo $row["ad"] . " " . $row["soyad"] . "<br>";
}
?>
4) INSERT / UPDATE Örneği
Veri eklemek/güncellemek için yine prepared statement kullanılır.
Örnek: INSERT
<?php
$sql = "INSERT INTO tablo1 (ad, soyad) VALUES (:ad, :soyad)";
$stmt = $pdo->prepare($sql);
$stmt->execute([
"ad" => "Ali",
"soyad" => "Yılmaz"
]);
echo "Kayıt eklendi. ID: " . $pdo->lastInsertId();
?>
Alternatif: MySQLi ile Bağlantı
MySQLi de güncel bir yöntemdir. PDO yerine tercih edilirse aşağıdaki gibi kullanılabilir.
Örnek: MySQLi bağlantı
<?php
$mysqli = new mysqli("localhost", "root", "sifre", "veritabani_adi");
if ($mysqli->connect_error) {
die("Bağlantı hatası: " . $mysqli->connect_error);
}
$mysqli->set_charset("utf8mb4");
echo "Bağlantı başarılı!";
?>
Hangi yöntemi seçmeli?
Yeni projelerde genelde PDO tercih edilir (farklı DB’lere uyum, daha esnek kullanım).
Sadece MySQL odaklı projelerde MySQLi de iyi bir alternatiftir.