PDOStatement::fetch – Preia următorul rând dintr-un set de rezultate
Descriere
mixed PDOStatement::fetch ( [int fetch_style [, int cursor_orientation [, int cursor_offset]]] )
Preia un rând dintr-un seet de rezultate asociat unui obiect PDOStatement. Parametrul fetch_style determină modul în care PDO întoarce rândul.
Parametri
fetch_style
Controlează modul în care va fi întors următorul rând. Această valoare trebuie să fie una dintre constantele PDO::FETCH_*, implicit la PDO::FETCH_BOTH.
· PDO::FETCH_ASSOC: întoarce o matrice indexată după numele coloanei în setul de rezultate
· PDO::FETCH_BOTH (implicit): întoarce o matrice indexată după ambele nume de coloane şi numărul coloanei indexat de la 0 în setul de rezultate
· PDO::FETCH_BOUND: întoarce TRUE şi atribuie valorile coloanelor din setul de rezultate la variabilele PHP la care au fost legate cu metoda PDOStatement::bindParam()
· PDO::FETCH_CLASS: întoarce o nouă instanţă a clasei cerute, mapând coloanele setului de rezultate la proprietăţile numite în clasă. Dacă fetch_style include PDO::FETCH_CLASSTYPE (de ex. PDO::FETCH_CLASS | PDO::FETCH_CLASSTYPE), atunci numele clasei este determinat dintr-o valoare a primei coloane.
· PDO::FETCH_INTO: actualizează o instanţă existentă a clasei cerute, mapând coloanele setului de rezultate la proprietăţile numite din clasă
· PDO::FETCH_LAZY: combină PDO::FETCH_BOTH şi PDO::FETCH_OBJ şi creează numele variabilelor din obiect aşa cum sunt accesate
· PDO::FETCH_NUM: întoarce o matrice indexată după numărul coloanei aşa cum este întors în setul de rezultate, începând cu coloana 0
· PDO::FETCH_OBJ: întoarce un obiect anonim cu nume de proprietăţi care corespund numelor de coloane întoarse la setul de rezultate
cursor_orientation
Pentru un obiect PDOStatement care reprezintă un cursor derulant, această valoare determină care rând va fi întors la apelant. Această valoare trebuie să fie una din constantele PDO::FETCH_ORI_*, implicit PDO::FETCH_ORI_NEXT. Pentru a cere un cursor derulant pentru obiectul PDOStatement, trebuie setat atributul PDO::ATTR_CURSOR la PDO::CURSOR_SCROLL atunci când se pregăteşte instrucţiunea SQL cu PDO::prepare().
offset
Pentru un obiect PDOStatement care reprezintă un cursor derulant al cărui parametru cursor_orientation este setat la PDO::FETCH_ORI_ABS, această valoare specifică numărul absolut al rândului din setul de rezultate care trebuie preluat.
Pentru un obiect PDOStatement care reprezintă un cursor derulant al cărui parametru cursor_orientation este setat la PDO::FETCH_ORI_REL, această valoare specifică rândul care va fi preluat relative la poziţia cursorului înainte de apelarea PDOStatement::fetch().
Exemple
1. Preluarea rândurilor folosind fetch styles
<?php
$sth = $dbh->prepare("SELECT name, colour FROM fruit");
$sth->execute();
/* Exercitiu PDOStatement::fetch styles */
print("PDO::FETCH_ASSOC: ");
print("Intoarce urmatorul rand ca matrice indexata dupa numele coloanei \n");
$result = $sth->fetch(PDO::FETCH_ASSOC);
print_r($result);
print("\n");
print("PDO::FETCH_BOTH: ");
print("Intoarce urmatorul rand ca matrice indexata dupa numele coloanei si numar\n");
$result = $sth->fetch(PDO::FETCH_BOTH);
print_r($result);
print("\n");
print("PDO::FETCH_LAZY: ");
print("Intoarce urmatorul rand ca obiect anonim avand ca proprietati numele coloanelor\n");
$result = $sth->fetch(PDO::FETCH_LAZY);
print_r($result);
print("\n");
print("PDO::FETCH_OBJ: ");
print("Intoarce urmatorul rand ca obiect anonym avand ca proprietati numele coloanelor\n");
$result = $sth->fetch(PDO::FETCH_OBJ);
print $result->NAME;
print("\n");
?>
Exemplul de mai sus va afişa:
PDO::FETCH_ASSOC: Intoarce urmatorul rand ca matrice indexata indexata dupa numele coloanei
Array
(
[NAME] => apple
[COLOUR] => red
)
PDO::FETCH_BOTH: Intoarce urmatorul rand ca matrice indexata dupa numele coloanei si numar
Array
(
[NAME] => banana
[0] => banana
[COLOUR] => yellow
[1] => yellow
)
PDO::FETCH_LAZY: Intoarce urmatorul rand ca obiect anonym avand ca proprietati numele coloanelor
PDORow Object
(
[NAME] => orange
[COLOUR] => orange
)
PDO::FETCH_OBJ: Intoarce urmatorul rand ca obiect anonym avand ca proprietati numele coloanelor
kiwi
2. Preluarea rândului cu un cursor derulant
<?php
function readDataForwards($dbh) {
$sql = 'SELECT hand, won, bet FROM mynumbers ORDER BY BET';
try {
$stmt = $dbh->prepare($sql, array(PDO::ATTR_CURSOR, PDO::CURSOR_SCROLL));
$stmt->execute();
while ($row = $stmt->fetch(PDO::FETCH_NUM, PDO::FETCH_ORI_NEXT)) {
$data = $row[0] . "\t" . $row[1] . "\t" . $row[2] . "\n";
print $data;
}
$stmt = null;
}
catch (PDOException $e) {
print $e->getMessage();
}
}
function readDataBackwards($dbh) {
$sql = 'SELECT hand, won, bet FROM mynumbers ORDER BY bet';
try {
$stmt = $dbh->prepare($sql, array(PDO::ATTR_CURSOR, PDO::CURSOR_SCROLL));
$stmt->execute();
$row = $stmt->fetch(PDO::FETCH_NUM, PDO::FETCH_ORI_LAST);
do {
$data = $row[0] . "\t" . $row[1] . "\t" . $row[2] . "\n";
print $data;
} while ($row = $stmt->fetch(PDO::FETCH_NUM, PDO::FETCH_ORI_PRIOR));
$stmt = null;
}
catch (PDOException $e) {
print $e->getMessage();
}
}
print "Citire crescator:\n";
readDataForwards($conn);
print "Citire descrescator:\n";
readDataBackwards($conn);
?>
Exemplul de mai sus va afişa:
Citire crescator:
21 10 5
16 0 5
19 20 10
Citire descrescator:
19 20 10
16 0 5
21 10 5