Read
işleminin nasıl yapılacağını inceleyeceğiz. Ayrıca, PDO (PHP Data Objects) ile güvenli ve modern bir yaklaşım kullanacağız.
CRUD Nedir?
CRUD, web uygulamalarının en temel işlemlerini ifade eder:
- Create: Yeni veri eklemek.
- Read: Veri tabanındaki verileri okumak.
- Update: Mevcut veriyi güncellemek.
- Delete: Mevcut veriyi silmek.
Bu yazıda,
Read
yani veri okuma işlemini detaylandıracağız.
Adım Adım PHP ile Veri Okuma (Read)
1. Veritabanı Bağlantısı Kurma
İlk olarak, PHP ile MySQL veritabanına bağlantı kurmamız gerekiyor. PDO sınıfı, PHP'de güvenli ve esnek bir veritabanı bağlantısı sağlamaktadır.
<?php
$dsn = 'mysql:host=localhost;dbname=blog';
$username = 'root';
$password = '';
try {
$dbh = new PDO($dsn, $username, $password);
// PDO hata modunu ayarlama (geliştirme sırasında faydalı olabilir)
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
echo 'Bağlantı hatası: ' . $e->getMessage();
}
?>
Yukarıdaki kod,
localhost
üzerinde çalışan blog
adlı bir veritabanına bağlanmak için PDO kullanır.
2. Veritabanından Veri Okuma (Read)
Bir veritabanı tablosundaki kayıtları okumak için SELECT
sorgusu kullanılır. Aşağıdaki örnek, bir makaleler
tablosundaki tüm kayıtları listelemek için kullanılan kodu gösteriyor.
<?php
// Veri tabanından verileri almak için SQL sorgusu
$sql = 'SELECT * FROM makaleler';
try {
// Sorguyu hazırla ve çalıştır
$stmt = $dbh->query($sql);
// Sonuçları döngü ile ekrana yazdır
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
echo "<h2>" . htmlspecialchars($row['baslik']) . "</h2>";
echo "<p>" . htmlspecialchars($row['icerik']) . "</p>";
echo "<small>Yayınlanma Tarihi: " . htmlspecialchars($row['tarih']) . "</small><hr>";
}
} catch (PDOException $e) {
echo 'Sorgu hatası: ' . $e->getMessage();
}
?>
Açıklama:
1. SQL Sorgusu:
'SELECT * FROM makaleler'
ifadesi, makaleler
tablosundaki tüm kayıtları seçer.
2. PDO Query: query()
yöntemi, SQL sorgusunu çalıştırır ve sonuçları döndürür.
3. Veri Çekme: fetch()
fonksiyonu ile sonuçları satır satır çekiyoruz. PDO::FETCH_ASSOC
ile her satır bir dizi olarak döner.
4. htmlspecialchars()
Kullanımı: Bu fonksiyon, XSS gibi güvenlik açıklarını önlemek için kullanılır. Kullanıcıdan gelen verileri güvenli bir şekilde ekrana yazdırmak için kullanılır.
3. Tek Bir Veriyi Okuma
Bazen veritabanındaki belirli bir kaydı okumak isteyebilirsiniz. Örneğin, bir makale ID'sine göre tek bir makaleyi seçmek isteyebilirsiniz. Bunun için hazırladığımız sorguda bir parametre kullanırız.
<?php
$makale_id = 1; // Örneğin, ID 1 olan makaleyi çekmek istiyoruz
$sql = 'SELECT * FROM makaleler WHERE id = :id';
$stmt = $dbh->prepare($sql);
$stmt->bindParam(':id', $makale_id, PDO::PARAM_INT);
$stmt->execute();
// Tek bir sonuç döndürmek için fetch() kullanıyoruz
$makale = $stmt->fetch(PDO::FETCH_ASSOC);
if ($makale) {
echo "<h2>" . htmlspecialchars($makale['baslik']) . "</h2>";
echo "<p>" . htmlspecialchars($makale['icerik']) . "</p>";
echo "<small>Yayınlanma Tarihi: " . htmlspecialchars($makale['tarih']) . "</small>";
} else {
echo "Makaleyi bulamadık.";
}
?>
Açıklama:
-
prepare()
: Bu yöntem, SQL sorgusunu önceden hazırlamak ve parametreleri güvenli bir şekilde bağlamak için kullanılır. Bu, SQL enjeksiyonu saldırılarına karşı koruma sağlar.
- bindParam()
: Bu fonksiyon, SQL sorgusundaki parametreyi ($makale_id) bağlar.
- fetch()
: Tek bir sonuç satırını almak için kullanılır.
4. Sorgu Sonuçlarını Listeleme
Sorgu sonuçlarını düzenli bir şekilde listelemek için HTML yapısını kullanabiliriz. Aşağıda basit bir tablo yapısında verileri listeleyelim:
<?php
$sql = 'SELECT * FROM makaleler';
$stmt = $dbh->query($sql);
?>
<table class="table">
<thead>
<tr>
<th>ID</th>
<th>Başlık</th>
<th>İçerik</th>
<th>Tarih</th>
</tr>
</thead>
<tbody>
<?php while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { ?>
<tr>
<td><?php echo htmlspecialchars($row['id']); ?></td>
<td><?php echo htmlspecialchars($row['baslik']); ?></td>
<td><?php echo htmlspecialchars($row['icerik']); ?></td>
<td><?php echo htmlspecialchars($row['tarih']); ?></td>
</tr>
<?php } ?>
</tbody>
</table>
Sonuç
PHP ile CRUD işlemlerindenRead
(veri okuma) işlemi, veritabanındaki kayıtları sorgulamak ve bu kayıtları ekrana yazdırmak için kullanılan bir süreçtir. PDO kullanarak güvenli ve etkili bir şekilde veritabanına bağlanabilir, sorgularınızı gerçekleştirebilir ve sonuçları işleyebilirsiniz.
Bu adımlar, PHP'de veri okuma işlemini güvenli ve verimli bir şekilde nasıl gerçekleştireceğinizi öğrenmenize yardımcı olur. PDO, özellikle güvenlik ve esneklik açısından güçlü bir veri tabanı erişim yöntemi sunar.