CodeBlanks Logo Icon CodeBlanks

SELECT ile kayıt okuma

PHP kursu · İleri seviye · Ders 16/92

PDO ile SELECT sorgusu çalıştırıp kayıtları okumayı öğrenirsin.

SELECT ile kayıt okuma

Kayıtları okumak için SELECT sorgusunu prepared statement ile çalıştırırsın. prepare() ve execute() INSERT'teki gibi çalışır.

Sonuçları almak için fetchAll(PDO::FETCH_ASSOC) her satırı ilişkisel dizi olarak döndürür; sütun adları dizi anahtarları olur.

Satır satır dönmek istersen fetch() yöntemini kullanırsın; her çağrıda bir sonraki satırı verir, kayıt kalmayınca false döner.

WHERE ile süzme

WHERE yan tümcesi belirli satırları seçer. Değerleri doğrudan SQL metnine yazmak yerine ? yer tutucu ile prepared statement kullanırsın.

Örneğin SELECT name FROM users WHERE role = ? sorgusu yalnızca istenilen role sahip satırları döndürür; değer execute() ile güvenle geçirilir.

Sıralama garanti altında olmadığından, deterministik çıktı için ORDER BY eklemek iyi bir alışkanlıktır.

Uygulama 'admin' rolündeki kullanıcıları listele

Aşağıdaki iskelette prepare, execute ve fetchAll(PDO::FETCH_ASSOC) kullanarak 'admin' rolündeki kullanıcıların adlarını ID sırasına göre yazdır.

Örnek çözümü göster
<?php
$pdo = new PDO('sqlite::memory:');
$pdo->exec("CREATE TABLE users (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, role TEXT)");
$pdo->exec("INSERT INTO users (name, role) VALUES ('Ayşe', 'admin')");
$pdo->exec("INSERT INTO users (name, role) VALUES ('Ali', 'editor')");
$pdo->exec("INSERT INTO users (name, role) VALUES ('Deniz', 'admin')");
$stmt = $pdo->prepare("SELECT name FROM users WHERE role = ? ORDER BY id");
$stmt->execute(['admin']);
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($rows as $row) {
    echo $row['name'] . "\n";
}

Kendini test et

  1. Hangi fetch modu ilişkisel dizi döndürür?

    • PDO::FETCH_ASSOC
    • PDO::FETCH_NUM
    • PDO::FETCH_BOTH
    • PDO::FETCH_OBJ
    Cevabı göster

    PDO::FETCH_ASSOC — PDO::FETCH_ASSOC her satırı sütun adları anahtarlı dizi olarak döndürür.

  2. Tüm satırları çek

    $rows = $stmt->____(PDO::FETCH_ASSOC);
    Cevabı göster
    $rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
  3. Yöntemleri sonuçlarına eşle

    fetch()
    Tek satır döndürür
    fetchAll()
    Tüm satırları döndürür
    fetchColumn()
    Tek sütun döndürür
    prepare()
    Sorguyu hazırlar

İleri seviye bölümündeki tüm dersler