fetchAll() ile tüm satırlar
fetchAll() ile sorgu sonucunun tüm satırlarını dizi olarak almayı öğrenirsin.
fetchAll() ile tüm satırlar
fetchAll() bir PDOStatement'den tüm satırları tek seferde bir dizi olarak alır. Her satır bir alt dizi olur; üst dizi üzerinde foreach ile dönersin.
Örnek: $rows = $stmt->fetchAll(PDO::FETCH_ASSOC). Sonra foreach ($rows as $row) { echo $row['name']; } ile her satırı işlersin.
Çok büyük tablolarda bellek riski olabilir; o durumda while + fetch döngüsü tercih edilir.
fetchAll() ve bellek
fetchAll() kullanışlıdır ama büyük tablolarda dikkatli olun. Çünkü tüm satırları aynı anda belleğe yükler; satır sayısı çoksa bellek tüketebilir.
Birkaç yüz satır için idealdir; kod kısa ve okunaktır. On binlerce satırda ise while + fetch döngüsü daha güvenlidir.
Hangisini seçeceğine karar verirken satır sayısını ve bellek sınırını düşün.
Uygulama fetchAll() ile 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. fetchAll(PDO::FETCH_ASSOC) ile tüm satırları bir dizi olarak al ve foreach ile her name alanını yazdır.
Örnek çözümü göster
:FETCH_ASSOC); ile tüm satırları al. foreach ($rows as $row) { 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");
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($rows as $row) {
echo $row['name'] . "\n";
}
Kendini test et
-
Tüm satırları almak 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')"); $pdo->exec("INSERT INTO users (name) VALUES ('Ali')"); $stmt = $pdo->query("SELECT name FROM users ORDER BY id"); $rows = $stmt->____(PDO::FETCH_ASSOC); foreach ($rows as $row) { 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')"); $pdo->exec("INSERT INTO users (name) VALUES ('Ali')"); $stmt = $pdo->query("SELECT name FROM users ORDER BY id"); $rows = $stmt->fetchAll(PDO::FETCH_ASSOC); foreach ($rows as $row) { echo $row['name'] . "\n"; } ?> -
fetchAll kavramlarını eşleştir
- fetchAll()
- Tüm satırları alır
- fetch()
- Tek satır alır
- foreach
- fetchAll ile kullanılır
- while
- fetch ile kullanılır
-
Çok büyük tabloda tüm satırları okurken hangisi tercih edilir?
- fetchAll() ile tek seferde al
- while + fetch() ile satır satır oku
- query() yerine exec() kullan
- fetch() yerine getAttribute() çağır
Cevabı göster
while + fetch() ile satır satır oku — Doğru. Büyük tablolarda while + fetch satır satır okuyarak belleği korur.