PDOStatement::fetch

PHP PDO 参考手册Manuel de référence PHP PDO

PDOStatement::fetch — Récupère la ligne suivante d'un jeu de résultats (PHP 5 >= 5.1.0, PECL pdo >= 0.1.0)


Description

Syntaxe

mixed PDOStatement::fetch ([ int $fetch_style [, int $cursor_orientation = PDO::FETCH_ORI_NEXT [, int $cursor_offset = 0 ]]] )

Récupère la ligne suivante d'un jeu de résultats associé à un objet PDOStatement. Le paramètre fetch_style détermine comment PDO renvoie la ligne.


Parameters

fetch_style

Contrôle la manière dont la ligne suivante sera renvoyée à l'appelant. Cette valeur doit être l'une des constantes PDO::FETCH_*, avec pour valeur par défaut celle de PDO::ATTR_DEFAULT_FETCH_MODE (qui est PDO::FETCH_BOTH par défaut).

  • PDO::FETCH_ASSOC: renvoie un tableau indexé par les noms des colonnes du jeu de résultats

  • PDO::FETCH_BOTH(par défaut) : renvoie un tableau indexé à la fois par les noms des colonnes du jeu de résultats et par des numéros de colonne commençant à 0

  • PDO::FETCH_BOUND: renvoieTRUE, et affecte les valeurs des colonnes du jeu de résultats aux variables PHP liées par la méthode PDOStatement::bindColumn().

  • PDO::FETCH_CLASS: renvoie une nouvelle instance de la classe demandée, en associant les colonnes du jeu de résultats aux noms de propriétés correspondants dans la classe. Sifetch_stylecontient PDO::FETCH_CLASSTYPE (par exemple,PDO::FETCH_CLASS | PDO::FETCH_CLASSTYPE), le nom de la classe est déterminé par la valeur de la première colonne

  • PDO::FETCH_INTO: met à jour une instance existante de la classe demandée, en mappant les colonnes du jeu de résultats aux propriétés nommées de la classe

  • PDO::FETCH_LAZY: utilisé en combinaison avecPDO::FETCH_BOTHetPDO::FETCH_OBJ, crée des noms de variables d'objet pour l'accès

  • PDO::FETCH_NUM: retourne un tableau indexé par les numéros de colonne du jeu de résultats commençant à 0

  • PDO::FETCH_OBJ: retourne un objet anonyme dont les noms des propriétés correspondent aux noms des colonnes du jeu de résultats

cursor_orientation
Pour un curseur défilable représenté par un objet PDOStatement, cette valeur détermine quelle ligne sera retournée à l'appelant. Cette valeur doit être l'une des constantes PDO::FETCH_ORI_*, avec PDO::FETCH_ORI_NEXT par défaut. Pour que l'objet PDOStatement utilise un curseur défilable, vous devez définir l'attribut PDO::ATTR_CURSOR sur PDO::CURSOR_SCROLL lors de la préparation de la requête SQL avec PDO::prepare().

offset
Pour un curseur défilable représenté par un objet PDOStatement avec le paramètre cursor_orientation défini sur PDO::FETCH_ORI_ABS, cette valeur spécifie le numéro de ligne absolu de la ligne à récupérer dans le jeu de résultats.
Pour un curseur défilable représenté par un objet PDOStatement avec le paramètre cursor_orientation défini sur PDO::FETCH_ORI_REL, cette valeur spécifie la position de la ligne à récupérer par rapport à la position du curseur avant l'appel à PDOStatement::fetch().


Valeurs de retour

La valeur renvoyée par cette fonction (méthode) en cas de succès dépend du type de récupération. Dans tous les cas, FALSE est renvoyé en cas d'échec.


Exemples

Récupérer des lignes avec différents styles de récupération

<?php
$sth = $dbh->prepare("SELECT name, colour FROM fruit");
$sth->execute();

/* 运用 PDOStatement::fetch 风格 */
print("PDO::FETCH_ASSOC: ");
print("Return next row as an array indexed by column name\n");
$result = $sth->fetch(PDO::FETCH_ASSOC);
print_r($result);
print("\n");

print("PDO::FETCH_BOTH: ");
print("Return next row as an array indexed by both column name and number\n");
$result = $sth->fetch(PDO::FETCH_BOTH);
print_r($result);
print("\n");

print("PDO::FETCH_LAZY: ");
print("Return next row as an anonymous object with column names as properties\n");
$result = $sth->fetch(PDO::FETCH_LAZY);
print_r($result);
print("\n");

print("PDO::FETCH_OBJ: ");
print("Return next row as an anonymous object with column names as properties\n");
$result = $sth->fetch(PDO::FETCH_OBJ);
print $result->NAME;
print("\n");
?>

L'exemple ci-dessus affichera :

PDO::FETCH_ASSOC: Return next row as an array indexed by column name
Array
(
    [NAME] => apple
    [COLOUR] => red
)

PDO::FETCH_BOTH: Return next row as an array indexed by both column name and number
Array
(
    [NAME] => banana
    [0] => banana
    [COLOUR] => yellow
    [1] => yellow
)

PDO::FETCH_LAZY: Return next row as an anonymous object with column names as properties
PDORow Object
(
    [NAME] => orange
    [COLOUR] => orange
)

PDO::FETCH_OBJ: Return next row as an anonymous object with column names as properties
kiwi

Récupérer des lignes à l'aide d'un curseur défilable

<?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 "Reading forwards:\n";
readDataForwards($conn);

print "Reading backwards:\n";
readDataBackwards($conn);
?>

L'exemple ci-dessus affichera :

Reading forwards:
21    10    5
16    0     5
19    20    10

Reading backwards:
19    20    10
16    0     5
21    10    5

PHP PDO 参考手册Manuel de référence PHP PDO

Autres extensions