PDOStatement::fetch
Récupère une ligne d’un jeu de résultats.
Syntaxe
mixed PDOStatement::fetch ([ $fetch_style[, $cursor_orientation[, $cursor_offset]]] );
Paramètres
$fetch_style : symbole (entier) facultatif spécifiant le format des données de la ligne. Consultez la section Notes pour obtenir la liste des valeurs possibles pour $fetch_style. La valeur par défaut est PDO::FETCH_BOTH. $fetch_style dans la méthode fetch remplace le $fetch_style spécifié dans la méthode PDO::query.
$cursor_orientation : symbole (entier) facultatif indiquant la ligne à récupérer quand l’instruction prepare spécifie PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL
. Consultez la section Notes pour obtenir la liste des valeurs possibles pour $cursor_orientation. Consultez PDO::prepare pour obtenir un exemple d’utilisation d’un curseur de défilement.
$cursor_offset : symbole (entier) facultatif qui spécifie la ligne à récupérer quand $cursor_orientation a la valeur PDO::FETCH_ORI_ABS ou PDO::FETCH_ORI_REL et PDO::ATTR_CURSOR a la valeur PDO::CURSOR_SCROLL.
Valeur de retour
Valeur mixte qui retourne une ligne ou la valeur false.
Notes
Le curseur s’avance automatiquement à l’appel de fetch. Le tableau suivant contient la liste des valeurs $fetch_style possibles.
$fetch_style | Description |
---|---|
PDO::FETCH_ASSOC | Spécifie un tableau indexé par nom de colonne. |
PDO::FETCH_BOTH | Spécifie un tableau indexé par nom de colonne et dans l’ordre à partir de 0. Il s’agit de la valeur par défaut. |
PDO::FETCH_BOUND | Retourne true et attribue les valeurs comme les spécifie PDOStatement::bindColumn. |
PDO::FETCH_CLASS | Crée une instance et mappe les colonnes sur des propriétés nommées. Appelez PDOStatement::setFetchMode avant d’appeler fetch. |
PDO::FETCH_INTO | Actualise une instance de la classe demandée. Appelez PDOStatement::setFetchMode avant d’appeler fetch. |
PDO::FETCH_LAZY | Crée des noms de variable pendant l’accès et crée un objet sans nom. |
PDO::FETCH_NUM | Spécifie un tableau indexé dans l’ordre des colonnes à partir de zéro. |
PDO::FETCH_OBJ | Spécifie un objet sans nom avec des noms de propriété qui correspondent à des noms de colonne. |
Si le curseur est à la fin du jeu de résultats (la dernière ligne a été récupérée et le curseur a franchi les limites du jeu de résultats) et si le curseur est avant uniquement (PDO::ATTR_CURSOR = PDO::CURSOR_FWDONLY), les appels à fetch ultérieurs échouent.
Si le curseur peut défiler (PDO::ATTR_CURSOR = PDO::CURSOR_SCROLL), fetch le replace dans les limites du jeu de résultats. Le tableau suivant contient la liste des valeurs $cursor_orientation possibles.
$cursor_orientation | Description |
---|---|
PDO::FETCH_ORI_NEXT | Récupère la ligne suivante. Il s’agit de la valeur par défaut. |
PDO::FETCH_ORI_PRIOR | Récupère la ligne précédente. |
PDO::FETCH_ORI_FIRST | Récupère la première ligne. |
PDO::FETCH_ORI_LAST | Récupère la dernière ligne. |
PDO::FETCH_ORI_ABS, num | Récupère la ligne demandée dans $cursor_offset par numéro de ligne. |
PDO::FETCH_ORI_REL, num | Récupère la ligne demandée dans $cursor_offset par position relative, à partir de la position actuelle. |
Si la valeur spécifiée pour $cursor_offset ou $cursor_orientation donne une position en dehors des limites du jeu de résultats, l’utilisation de fetch aboutit à un échec.
La prise en charge de PDO a été ajoutée dans la version 2.0 de Pilotes Microsoft SQL Server pour PHP.
Exemple
<?php
$server = "(local)";
$database = "AdventureWorks";
$conn = new PDO( "sqlsrv:server=$server ; Database = $database", "", "");
print( "\n---------- PDO::FETCH_CLASS -------------\n" );
$stmt = $conn->query( "select * from HumanResources.Department order by GroupName" );
class cc {
function __construct( $arg ) {
echo "$arg";
}
function __toString() {
return $this->DepartmentID . "; " . $this->Name . "; " . $this->GroupName;
}
}
$stmt->setFetchMode(PDO::FETCH_CLASS, 'cc', array( "arg1 " ));
while ( $row = $stmt->fetch(PDO::FETCH_CLASS)) {
print($row . "\n");
}
print( "\n---------- PDO::FETCH_INTO -------------\n" );
$stmt = $conn->query( "select * from HumanResources.Department order by GroupName" );
$c_obj = new cc( '' );
$stmt->setFetchMode(PDO::FETCH_INTO, $c_obj);
while ( $row = $stmt->fetch(PDO::FETCH_INTO)) {
echo "$c_obj\n";
}
print( "\n---------- PDO::FETCH_ASSOC -------------\n" );
$stmt = $conn->query( "select * from Person.ContactType where ContactTypeID < 5 " );
$result = $stmt->fetch( PDO::FETCH_ASSOC );
print_r( $result );
print( "\n---------- PDO::FETCH_NUM -------------\n" );
$stmt = $conn->query( "select * from Person.ContactType where ContactTypeID < 5 " );
$result = $stmt->fetch( PDO::FETCH_NUM );
print_r ($result );
print( "\n---------- PDO::FETCH_BOTH -------------\n" );
$stmt = $conn->query( "select * from Person.ContactType where ContactTypeID < 5 " );
$result = $stmt->fetch( PDO::FETCH_BOTH );
print_r( $result );
print( "\n---------- PDO::FETCH_LAZY -------------\n" );
$stmt = $conn->query( "select * from Person.ContactType where ContactTypeID < 5 " );
$result = $stmt->fetch( PDO::FETCH_LAZY );
print_r( $result );
print( "\n---------- PDO::FETCH_OBJ -------------\n" );
$stmt = $conn->query( "select * from Person.ContactType where ContactTypeID < 5 " );
$result = $stmt->fetch( PDO::FETCH_OBJ );
print $result->Name;
print( "\n \n" );
print( "\n---------- PDO::FETCH_BOUND -------------\n" );
$stmt = $conn->query( "select * from Person.ContactType where ContactTypeID < 5 " );
$stmt->bindColumn('Name', $name);
$result = $stmt->fetch( PDO::FETCH_BOUND );
print $name;
print( "\n \n" );
?>