18- PHP PDO ile MySQL Bağlantısı ve Sorguları

Giriş: PDO Nedir?

PDO, PHP'de veritabanı işlemleri için kullanılan bir veri erişim katmanıdır. MySQL gibi farklı veritabanlarına erişim sağlamak için kullanılır. PDO, SQL enjeksiyonlarına karşı daha güvenli bir seçenek sunar ve farklı veritabanı türleri arasında geçiş yapmayı kolaylaştırır.

1. PDO ile MySQL Bağlantısı

Bağlantı Oluşturma:

<?php
$servername = "localhost";
$username = "kullanici_adiniz";
$password = "sifreniz";
$dbname = "veritabani_adiniz";

try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Veritabanına başarıyla bağlandı!";
} catch (PDOException $e) {
echo "Bağlantı hatası: " . $e->getMessage();
}
?>

2. Temel Sorgular ve Veri Çekme

SELECT Sorgusu:

<?php
$stmt = $conn->query("SELECT * FROM kullanici_tablosu");
while ($row = $stmt->fetch()) {
echo "Kullanıcı Adı: " . $row['kullanici_adi'] . "<br>";
}
?>

Veri Ekleme (INSERT):

<?php
$adi = "John";
$soyadi = "Doe";
$email = "john.doe@example.com";

$stmt = $conn->prepare("INSERT INTO kullanici_tablosu (adi, soyadi, email) VALUES (:adi, :soyadi, :email)");
$stmt->bindParam(':adi', $adi);
$stmt->bindParam(':soyadi', $soyadi);
$stmt->bindParam(':email', $email);

$stmt->execute();

echo "Yeni kullanıcı başarıyla eklendi!";
?>

Veri Güncelleme (UPDATE):

<?php
$yeni_email = "john.doe@gmail.com";
$kullanici_id = 1;

$stmt = $conn->prepare("UPDATE kullanici_tablosu SET email = :email WHERE id = :id");
$stmt->bindParam(':email', $yeni_email);
$stmt->bindParam(':id', $kullanici_id);

$stmt->execute();

echo "Kullanıcı bilgileri güncellendi!";
?>

Veri Silme (DELETE):

<?php
$kullanici_id = 1;

$stmt = $conn->prepare("DELETE FROM kullanici_tablosu WHERE id = :id");
$stmt->bindParam(':id', $kullanici_id);

$stmt->execute();

echo "Kullanıcı başarıyla silindi!";
?>

3. Parametreli Sorgular ve SQL Injection'a Karşı Koruma

Parametreli SELECT Sorgusu:

<?php
$kullanici_adi = "john_doe";

$stmt = $conn->prepare("SELECT * FROM kullanici_tablosu WHERE kullanici_adi = :kullanici_adi");
$stmt->bindParam(':kullanici_adi', $kullanici_adi);
$stmt->execute();

while ($row = $stmt->fetch()) {
echo "Kullanıcı Adı: " . $row['kullanici_adi'] . "<br>";
}
?>

4. Sonuç Kontrolü ve Bağlantı Kapatma

Bağlantıyı Kapatma:

<?php
$conn = null; // veya $conn = NULL;
?>