CodeBlanks Logo Icon CodeBlanks

fetch() ile tek satır alma

PHP kursu · İleri seviye · Ders 4/92

fetch() ile sorgu sonucundan tek satır almayı öğrenirsin.

fetch() ile tek satır

fetch() bir PDOStatement'den bir satır okur ve imleci bir ileri taşır. Her çağrıda bir sonraki satır döner; tablo bittiğinde false döner.

İlk satırı almak için tek bir fetch() çağrısı yeter: $row = $stmt->fetch(PDO::FETCH_ASSOC). Dönen ilişkisel dizide sütun adları anahtarlardır: $row['name'].

Tüm satırları tek seferde istiyorsan fetchAll() kullanırsın; bu konuya bir sonraki derste bakacağız.

fetch() ile while döngüsü

Birden çok satırı tek tek okumak için while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) kalıbı kullanılır. Döngü her adımda bir satır okur; fetch() false döndürdüğünde biter.

Bu kalıp büyük tablolarda bellek tasarrufu sağlar; çünkü tüm satırları aynı anda belleğe yüklemez. Her satırı sırayla işler.

Satır sayısı azsa fetchAll() daha kısa yazılır; çoksa while döngüsü tercih edilir.

Uygulama while döngüsüyle tüm adları yazdır

Bellek içi SQLite'ta users tablosu oluştur, üç kullanıcı ekle. query() ile SELECT name FROM users ORDER BY id çalıştır. while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) kalıbıyla her satırı oku ve name alanını yazdır.

Örnek çözümü göster
:FETCH_ASSOC)) { echo $row['name'] . "\n"; } ile yazdır.
Örnek çözüm:
<?php
$pdo = new PDO('sqlite::memory:');
$pdo->exec("CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT)");
$pdo->exec("INSERT INTO users (name) VALUES ('Ayşe')");
$pdo->exec("INSERT INTO users (name) VALUES ('Ali')");
$pdo->exec("INSERT INTO users (name) VALUES ('Deniz')");
$stmt = $pdo->query("SELECT name FROM users ORDER BY id");
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
    echo $row['name'] . "\n";
}

Kendini test et

  1. fetch kavramlarını eşleştir

    fetch()
    Tek satır okur
    PDO::FETCH_ASSOC
    İlişkisel dizi modu
    false
    Tablo bittiğinde döner
    $row['name']
    Sütun değerine erişim
  2. fetch() tablonun sonunda ne döndürür?

    • Boş dizi []
    • null
    • 0
    • false
    Cevabı göster

    false — Doğru. fetch() tablo bittiğinde false döndürür; while döngüsünde kullanışlıdır.

  3. Tek satır okumak için doğru metodu seç

    <?php
    $pdo = new PDO('sqlite::memory:');
    $pdo->exec("CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT)");
    $pdo->exec("INSERT INTO users (name) VALUES ('Ayşe')");
    $stmt = $pdo->query("SELECT name FROM users");
    $row = $stmt->____(PDO::FETCH_ASSOC);
    echo $row['name'] . "\n";
    ?>
    Cevabı göster
    <?php
    $pdo = new PDO('sqlite::memory:');
    $pdo->exec("CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT)");
    $pdo->exec("INSERT INTO users (name) VALUES ('Ayşe')");
    $stmt = $pdo->query("SELECT name FROM users");
    $row = $stmt->fetch(PDO::FETCH_ASSOC);
    echo $row['name'] . "\n";
    ?>

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