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

# 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

function 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ée typiquement dans une boucle tant qu'elle ne retourne pas `false`, indiquant qu'il n'y a plus de lignes disponibles.

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. S'il n'y a plus de lignes disponibles 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. Utiliser 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) {
        // Utiliser des noms d'attributs en majuscule 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 le 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) {
        // Utiliser des noms d'attributs en majuscule pour chaque colonne Oracle standard
        echo $row->ID . "<br>\n";
        // Utiliser 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

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open