Manuel PHP
Précédent |  | Suivant

# PDOStatement::fetch

(no version information, might be only in CVS)

PDOStatement::fetch -- Récupère la ligne suivante d'un jeu de résultat PDO

## Description

mixed PDOStatement::fetch ( [int fetch_style [, int cursor_orientation [, int cursor_offset]]] )

PDOStatement::fetch() récupère une ligne depuis un jeu de résultats associé à l'objet `PDOStatement`. Le paramètre `fetch_style` détermine la façon dont PDO retourne la ligne.

## Liste de paramètres

`fetch_style`

  Contrôle comment la prochaine ligne sera retournée à l'appelant. Cette valeur doit être une des constantes `PDO::FETCH_*`, et par défaut, vaut `PDO::FETCH_BOTH`.

  - `PDO::FETCH_ASSOC`: retourne un tableau indexé par le nom de la colonne comme retourné dans le jeu de résultats

  - `PDO_FETCH_BOTH` (défaut): retourne un tableau indexé par les noms de colonnes mais aussi par les numéros de colonnes (commençant à l'indice 0), comme retournés dans le jeu de résultats

  - `PDO::FETCH_BOUND`: retourne `TRUE` et assigne les valeurs des colonnes de votre jeu de résultats dans les variables PHP à laquelles elles sont liées avec la méthode PDOStatement::bindParam()

  - `PDO::FETCH_CLASS`: retourne une nouvelle instance de la classe demandée, liant les colonnes du jeu de résultats aux noms des propriétés de la classe. Si `fetch_style` inclut PDO::FETCH_CLASS (c'est-à-dire `PDO::FETCH_CLASS | PDO::FETCH_CLASSTYPE`), alors le nom de la classe est déterminé à partir d'une valeur de la première colonne.

  - `PDO::FETCH_INTO`: met à jour une instance existante de la classe demandée, liant les colonnes du jeu de résultats aux noms des propriétés de la classe

  - `PDO::FETCH_LAZY`: combine `PDO::FETCH_BOTH` et `PDO::FETCH_OBJ`, créant ainsi les noms des variables de l'objet, comme elles sont accédées

  - `PDO::FETCH_NUM`: retourne un tableau indexé par le numéro de la colonne comme elle est retourné dans votre jeu de résultat, commençant à 0

  - `PDO_FETCH_OBJ`: retourne un objet anonyme avec les noms de propriétés qui correspondent aux noms des colonnes retournés dans le jeu de résultats

`cursor_orientation`

  Pour un objet PDOStatement représentant un curseur scrollable, cette valeur détermine quelle ligne sera retournée à l'appelant. Cette valeur doit être une des constantes `PDO::FETCH_ORI_*`, et par défaut, vaut `PDO::FETCH_ORI_NEXT`. Pour demander un curseur scrollable pour votre objet PDOStatement, vous devez définir l'attribut `PDO::ATTR_CURSOR` à `PDO::CURSOR_SCROLL` lorsque vous préparez la requête SQL avec la fonction PDO::prepare().

`offset`

  Pour un objet PDOStatement représentant un curseur scrollable pour lequel le paramètre `cursor_orientation` est défini à `PDO::FETCH_ORI_ABS`, cette valeur spécifie le numéro absolu de la ligne dans le jeu de résultats qui doit être récupérée.

  Pour un objet PDOStatement représentant un curseur scrollable pour lequel le paramètre `cursor_orientation` est défini à `PDO::FETCH_ORI_REL`, cette valeur spécifie la ligne à récupérer relativement à la position du curseur avant l'appel à la fonction PDOStatement::fetch().

## Exemples

Exemple 1. Récupération de lignes en utilisant différentes méthodes

`<?php
$sth = $dbh->prepare("SELECT nom, couleur FROM fruit");
$sth->execute();
/* styles PDOStatement::fetch */
print("PDO::FETCH_ASSOC: ");
print("Retourne la ligne suivante en tant qu'un tableau indexé par le nom des colonnes\n");
$result = $sth->fetch(PDO::FETCH_ASSOC);
print_r($result);
print("\n");
print("PDO::FETCH_BOTH: ");
print("Retourne la ligne suivante en tant qu'un tableau indexé par le nom et le numéro de la colonne\n");
$result = $sth->fetch(PDO::FETCH_BOTH);
print_r($result);
print("\n");
print("PDO::FETCH_LAZY: ");
print("Retourne la ligne suivante en tant qu'objet anonyme ayant les noms de colonnes comme propriétés\n");
$result = $sth->fetch(PDO::FETCH_LAZY);
print_r($result);
print("\n");
print("PDO::FETCH_OBJ: ");
print("Retourne la ligne suivante en tant qu'objet anonyme ayant les noms de colonnes comme propriétés\n");
$result = $sth->fetch(PDO::FETCH_OBJ);
print $result->NAME;
print("\n");
?>`

L'exemple ci-dessus va afficher :

    PDO::FETCH_ASSOC: Retourne la ligne suivante en tant qu'un tableau indexé par le nom des colonnes
    Array
    (
        [NOM] => apple
        [COULEUR] => red
    )

    PDO::FETCH_BOTH: Retourne la ligne suivante en tant qu'un tableau indexé par le nom et le numéro de la colonne
    Array
    (
        [NOM] => banana
        [0] => banana
        [COULEUR] => yellow
        [1] => yellow
    )

    PDO::FETCH_LAZY: Retourne la ligne suivante en tant qu'objet anonyme ayant les noms de colonnes comme propriétés PDORow Object
    (
        [NOM] => orange
        [COULEUR] => orange
    )

    PDO::FETCH_OBJ: Retourne la ligne suivante en tant qu'objet anonyme ayant les noms de colonnes comme propriétés kiwi

Exemple 2. Récupération des lignes avec un curseur scrollable

`<?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 "Lecture en avant :\n";
readDataForwards($conn);
print "Lecture en arrière :\n";
readDataBackwards($conn);
?>`

L'exemple ci-dessus va afficher :

    Lecture en avant :
    21    10    5
    16    0     5
    19    20    10

    Lecture en arrière :
    19    20    10
    16    0     5
    21    10    5

## Voir aussi

PDO::query()
PDOStatement::fetchAll()
PDOStatement::fetchColumn()
PDOStatement::prepare()
PDOStatement::setFetchMode()

Précédent | Sommaire | Suivant
PDOStatement::execute | Niveau supérieur | PDOStatement::fetchAll