fetch mode sabitleri
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
-
$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.
-
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
-
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"; ?>