CodeBlanks Logo Icon CodeBlanks

fetch mode sabitleri

PHP kursu · İleri seviye · Ders 6/92

PDO::FETCH_ASSOC, PDO::FETCH_OBJ ve PDO::FETCH_NUM gibi fetch modlarını öğrenirsin.

fetch mode sabitleri

fetch() ve fetchAll() bir mod argümanı alır. En yaygın üç mod: PDO::FETCH_ASSOC, PDO::FETCH_NUM ve PDO::FETCH_OBJ.

FETCH_ASSOC sütun adlarıyla ilişkisel dizi verir: $row['name']. FETCH_NUM sütun sırasıyla sayısal dizi verir: $row[0].

FETCH_OBJ ise her satırı bir stdClass nesnesi olarak verir; sütunlara $row->name biçiminde erişilirsin.

FETCH_BOTH ve varsayılan mod

PDO::FETCH_BOTH hem sütun adı hem sıra numarasıyla erişime izin verir; $row['name'] ve $row[0] aynı anda çalışır. Bu mod PDO'da varsayılanır.

Yine de en iyi pratik açıkça FETCH_ASSOC yazmaktır; çünkü FETCH_BOTH çift erişim yüzünden ek bellek ve karışıklık yaratır.

Sonraki gruplarda FETCH_CLASS ile kendi sınıfına eşleme yapmayı da göreceğiz; bu, özellikleri dolu bir nesne döndürür.

Uygulama FETCH_OBJ ile nesne erişimi

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_OBJ)) kalıbıyla her satırı nesne olarak oku ve $row->name ile adını yazdır.

Örnek çözümü göster
:FETCH_OBJ)) { 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_OBJ)) {
    echo $row->name . "\n";
}

Kendini test et

  1. $row->name biçiminde erişim hangi modda mümkündür?

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

    PDO::FETCH_OBJ — Doğru. FETCH_OBJ her satırı nesne olarak verir; $row->name ile erişilir.

  2. Fetch modlarını eşleştir

    PDO::FETCH_ASSOC
    Sütun adıyla dizi
    PDO::FETCH_NUM
    Sıra numarasıyla dizi
    PDO::FETCH_OBJ
    Nesne olarak satır
  3. FETCH_OBJ ile sütun erişimini tamamla

    <?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_OBJ);
    echo $row->____ . "\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_OBJ);
    echo $row->name . "\n";
    ?>

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