# oci_fetch_object

(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)

oci_fetch_object — Lit une ligne d'un résultat sous forme d'objet

### Description

oci_fetch_object(resource `$statement`, int `$mode` = OCI_ASSOC | OCI_RETURN_NULLS): stdClass|false

Retourne un objet contenant la prochaine ligne de résultat d'une requête. Chaque attribut de cet objet correspond à une colonne de la ligne. Cette fonction est appelé typiquement dans une boucle tant qu'elle ne retourne pas `false`, indiquant qu'il n'y a plus de lignes de disponible.

Pour plus de détails sur le mapping des types de données effectué par l'extension OCI8, lisez les types de données supportés par le driver.

### Liste de paramètres

`statement`

  Un identifiant de requête OCI8 créé par la fonction oci_parse() et exécuté par la fonction oci_execute(), ou un identifiant de requête `REF CURSOR`.

### Valeurs de retour

Retourne un objet. Chaque attribut de cet objet correspond à une colonne de la ligne. Si'il n'y a plus de lignes de disponible dans la requête `statement` alors `false` est retourné.

Toutes les colonnes `LOB` sont retournées sous la forme de descripteurs LOB.

Les colonnes `DATE` sont retournées sous forme de chaînes formatées avec le format de date courante. Le format par défaut peut être changé à l'aide des variables d'environnement Oracle, comme `NLS_LANG` ou en exécutant la commande `ALTER SESSION SET NLS_DATE_FORMAT`.

Les noms de colonnes qui ne sont pas sensibles à la casse (par défaut sous Oracle), auront des noms d'attributs en majuscule. Les noms de colonnes qui sont sensibles à la casse, auront des noms d'attributs utilisant exactement la même casse de la colonne. Utilisez la fonction var_dump() sur l'objet de résultat pour vérifier la casse appropriée pour l'accès aux attributs.

Les valeurs d'attribut seront `null` pour chaque champ de données `NULL`.

### Exemples

Exemple #1 Exemple avec oci_fetch_object()

`<?php
/*
Avant l'exécution, créez la table :
CREATE TABLE mytab (id NUMBER, description VARCHAR2(30));
INSERT INTO mytab (id, description) values (1, 'Fish and Chips');
COMMIT;
*/
$conn = oci_connect('hr', 'welcome', 'localhost/XE');
if (!$conn) {
$e = oci_error();
trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}
$stid = oci_parse($conn, 'SELECT id, description FROM mytab');
oci_execute($stid);
while (($row = oci_fetch_object($stid)) != false) {
// Utilisez des noms d'attributs sensibles à la casse pour chaque colonne standard Oracle
echo $row->ID . "<br>\n";
echo $row->DESCRIPTION . "<br>\n";
}
// Affiche :
// 1
// Fish and Chips
oci_free_statement($stid);
oci_close($conn);
?>`

Exemple #2 Exemple avec oci_fetch_object() avec des noms de colonne sensibles à la casse

`<?php
/*
Avant l'exécution, créez la tableau avec une colonne dont le nom est sensible à la casse :
CREATE TABLE mytab (id NUMBER, "MyDescription" VARCHAR2(30));
INSERT INTO mytab (id, "MyDescription") values (1, 'Iced Coffee');
COMMIT;
*/
$conn = oci_connect('hr', 'welcome', 'localhost/XE');
if (!$conn) {
$e = oci_error();
trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}
$stid = oci_parse($conn, 'SELECT id, "MyDescription" FROM mytab');
oci_execute($stid);
while (($row = oci_fetch_object($stid)) != false) {
// Utilisez des noms d'attributs en majuscule pour chaque colonne Oracle standard
echo $row->ID . "<br>\n";
// Utilisez la casse exacte pour les noms de colonnes sensibles à la casse
echo $row->MyDescription . "<br>\n";
}
// Affiche :
// 1
// Iced Coffee
oci_free_statement($stid);
oci_close($conn);
?>`

Exemple #3 Exemple avec oci_fetch_object() avec des LOBs

`<?php
/*
Avant l'exécution, créez la table :
CREATE TABLE mytab (id NUMBER, description CLOB);
INSERT INTO mytab (id, description) values (1, 'A very long string');
COMMIT;
*/
$conn = oci_connect('hr', 'welcome', 'localhost/XE');
if (!$conn) {
$e = oci_error();
trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}
$stid = oci_parse($conn, 'SELECT id, description FROM mytab');
oci_execute($stid);
while (($row = oci_fetch_object($stid)) != false) {
echo $row->ID . "<br>\n";
// Ce qui suit affichera les 11 premiers octets depuis DESCRIPTION
echo $row->DESCRIPTION->read(11) . "<br>\n";
}
// Affiche :
// 1
// A very long
oci_free_statement($stid);
oci_close($conn);
?>`

### Voir aussi

- oci_fetch() - Lit la prochaine ligne d'un résultat Oracle dans un buffer interne
- oci_fetch_all() - Lit plusieurs lignes d'un résultat dans un tableau multidimensionnel
- oci_fetch_assoc() - Lit une ligne d'un résultat sous forme de tableau associatif
- oci_fetch_array() - Lit une ligne d'un résultat sous forme de tableau associatif ou numérique
- oci_fetch_row() - Lit la prochaine ligne d'une requête sous forme de tableau numérique