(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.1.0)
PDOStatement::fetchAll — Sonuç kümesinde kalan satırları döndürür
kip
PDOStatement::fetch() yönteminde açıklandığı gibi
döndürülen dizinin içeriğini belirleyen sabit.
PDO::FETCH_DEFAULT
öntanımlıdır.
Sonuç kümesindeki tek bir sütunun tüm değerleri içeren bir dizi
döndürmek için PDO::FETCH_COLUMN
belirtin. Bu
durumda hangi sütunun içeriğinin alınacağını
sütun
ile belirtin.
Sonuç kümesindeki tek bir sütunun eşsiz değerleri içeren bir dizi
döndürmek için PDO::FETCH_COLUMN
ile
PDO::FETCH_UNIQUE
sabitini bit seviyesinde
VEYAlayın.
Belirtilen sütunun değerlerine göre gruplanmış bir ilişkisel dizi
döndürmek için PDO::FETCH_COLUMN
ile
PDO::FETCH_GROUP
sabitini bit seviyesinde
VEYAlayın.
sütun
PDO::FETCH_COLUMN
ile kullanılır.
İlk sütunun indisinin 0
olduğu varsayımıyla
sütun indisi.
bağımsız_değişkenler
PDO::FETCH_CLASS
ile kullanılır. Belirtilen sınıfın
örnekleri, her sütun sınıfın isimli özellikleriyle eşleştirilerek
döndürülür.
geriçağırım
PDO::FETCH_FUNC
ile kullanılır. Belirtilen işlevin
sonuçları, her satırın sütunları çağrıda bağımsız değişken olarak
kullanılarak döndürülür.
Sonuç kümesinde kalan satırların tümünü bir dizi olarak döndürür. Dizinin her elemanı birer satır içerir ve bu satır elemanları sütun değerlerini içeren bir dizi ya da sütun isimlerinin özelliklere karşı düştüğü bir nesne içerir. Sıfır sonuç için boş dizi döner.
Büyük sonuç kümelerini almak için bu yöntemi kullanmak sistem ve muhtemelen ağ kaynaklarından aşırı taleplere yol açar. Tüm veriyi alıp PHP ile işleme tabi tutmak yerine sonuç kümeleri üzerinde işlem yapmak için veritabanı sunucusunu kullanmak daha iyi olabilir. Örneğin, SQL'de WHERE ve ORDER BY yan tümcelerini kullanarak, PHP'de işleme sokmadan önce sonuç kümesini küçültebilirsiniz.
Sürüm: | Açıklama |
---|---|
8.0.0 |
Bu yöntem artık daima bir dizi döndürüyor, evvelce başarısızlık
durumunda false dönerdi.
|
PDO::ATTR_ERRMODE
özniteliğine
PDO::ERRMODE_WARNING
atanırsa
E_WARNING
düzeyinde bir hata çıktılanır.
PDO::ATTR_ERRMODE
özniteliğine
PDO::ERRMODE_EXCEPTION
atanırsa
PDOException istisnası oluşur.
Örnek 1 - Bir sonuç kümesinde kalan tüm satırları almak
<?php
$sth = $dbh->prepare("SELECT ad, renk FROM meyveler");
$sth->execute();
/* Sonuç kümesindeki tüm satırları alalım */
print "Sonuç kümesindeki tüm satırlar:\n";
$result = $sth->fetchAll();
print_r($result);
?>
Yukarıdaki örnek şuna benzer bir çıktı üretir:
Sonuç kümesindeki tüm satırlar: Array ( [0] => Array ( [ad] => armut [0] => armut [renk] => yeşil [1] => yeşil ) [1] => Array ( [ad] => ahududu [0] => ahududu [renk] => mor [1] => mor ) )
Örnek 2 - Sonuç kümesinden tek bir sütunun tüm değerlerini almak
Aşağıdaki örnekte, SQL deyimi her satırda çok sayıda sütun döndürse bile bu sonuç kümesinden tek bir sütunun tüm değerlerinin nasıl alınacağı gösterilmiştir.
<?php
$sth = $dbh->prepare("SELECT isim, renk FROM meyveler");
$sth->execute();
/* İlk sütunun tüm değerlerini alalım */
$result = $sth->fetchAll(PDO::FETCH_COLUMN, 0);
var_dump($result);
?>
Yukarıdaki örnek şuna benzer bir çıktı üretir:
Array(3) ( [0] => string(5) => elma [1] => string(4) => armut [2] => string(10) => ahududu )
Örnek 3 - Tüm değerleri tek bir sütuna göre gruplamak
Aşağıdaki örnekte, sonuç kümesindeki belli bir sütunun değerlerine göre gruplanmış bir ilişkisel dizini nasıl döndürüleceği gösterilmiştir. Dizi üç anahtar içerir: Elma ve armut iki farklı renk içeren iki dizi olarak ahududu ise tek renk içeren bir dizi olarak döndürülür.
<?php
$insert = $dbh->prepare("INSERT INTO fruit(isim, renk) VALUES (?, ?)");
$insert->execute(array('elma', 'yeşil'));
$insert->execute(array('armut', 'sarı'));
$sth = $dbh->prepare("SELECT isim, renk FROM meyveler");
$sth->execute();
/* Değerleri ilk sütuna göre gruplayalım */
var_dump($sth->fetchAll(PDO::FETCH_COLUMN|PDO::FETCH_GROUP));
?>
Yukarıdaki örnek şuna benzer bir çıktı üretir:
array(3) { ["elma"]=> array(2) { [0]=> string(5) "yeşil" [1]=> string(7) "kırmızı" } ["armut"]=> array(2) { [0]=> string(5) "yeşil" [1]=> string(4) "sarı" } ["ahududu"]=> array(1) { [0]=> string(3) "mor" } }
Örnek 4 - Her sonuç için bir sınıf örneklemek
Aşağıda PDO::FETCH_CLASS
alım kipinin davranışı
örneklenmiştir:
<?php
class fruit {
public $name;
public $colour;
}
$sth = $dbh->prepare("SELECT name, colour FROM fruit");
$sth->execute();
$result = $sth->fetchAll(PDO::FETCH_CLASS, "fruit");
var_dump($result);
?>
Yukarıdaki örnek şuna benzer bir çıktı üretir:
array(3) { [0]=> object(fruit)#1 (2) { ["name"]=> string(5) "apple" ["colour"]=> string(5) "green" } [1]=> object(fruit)#2 (2) { ["name"]=> string(4) "pear" ["colour"]=> string(6) "yellow" } [2]=> object(fruit)#3 (2) { ["name"]=> string(10) "watermelon" ["colour"]=> string(4) "pink" } [3]=> object(fruit)#4 (2) { ["name"]=> string(5) "apple" ["colour"]=> string(3) "red" } [4]=> object(fruit)#5 (2) { ["name"]=> string(4) "pear" ["colour"]=> string(5) "green" } }
Örnek 5 - Her sonuç için bir işlev çağırmak
Aşağıda PDO::FETCH_FUNC
alım kipinin davranışı
örneklenmiştir:
<?php
function fruit($name, $colour) {
return "{$name}: {$colour}";
}
$sth = $dbh->prepare("SELECT name, colour FROM fruit");
$sth->execute();
$result = $sth->fetchAll(PDO::FETCH_FUNC, "fruit");
var_dump($result);
?>
Yukarıdaki örnek şuna benzer bir çıktı üretir:
array(3) { [0]=> string(12) "apple: green" [1]=> string(12) "pear: yellow" [2]=> string(16) "watermelon: pink" [3]=> string(10) "apple: red" [4]=> string(11) "pear: green" }