Returns the next row from a query as an object

- « oci_fetch_assoc

- oci_fetch_row »

- PHP Manual
- OCI8 Functions
- Returns the next row from a query as an object

# oci_fetch_object

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

oci_fetch_object — Returns the next row from a query as an object

### Description

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

Returns an object containing the next result-set row of a query. Each attribute of the object corresponds to a column of the row. This function is typically called in a loop until it returns `false`, indicating no more rows exist.

For details on the data type mapping performed by the OCI8 extension, see the datatypes supported by the driver

### Parameters

`statement`

  A valid OCI8 statement identifier created by oci_parse() and executed by oci_execute(), or a `REF CURSOR` statement identifier.

### Return Values

Returns an object. Each attribute of the object corresponds to a column of the row. If there are no more rows in the `statement` then `false` is returned.

Any `LOB` columns are returned as LOB descriptors.

`DATE` columns are returned as strings formatted to the current date format. The default format can be changed with Oracle environment variables such as `NLS_LANG` or by a previously executed `ALTER SESSION SET NLS_DATE_FORMAT` command.

Oracle's default, non-case sensitive column names will have uppercase attribute names. Case-sensitive column names will have attribute names using the exact column case. Use var_dump() on the result object to verify the appropriate case for attribute access.

Attribute values will be `null` for any `NULL` data fields.

### Examples

Example #1 oci_fetch_object() example

    <?php/*  Before running, create the 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) {    // Use upper case attribute names for each standard Oracle column    echo $row->ID . "<br>\n";    echo $row->DESCRIPTION . "<br>\n"; }// Output is://    1//    Fish and Chipsoci_free_statement($stid);oci_close($conn);?>

Example #2 oci_fetch_object() with case sensitive column names

    <?php/*  Before running, create the table with a case sensitive column name:    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) {    // Use upper case attribute names for each standard Oracle column    echo $row->ID . "<br>\n";    // Use the exact case for the case sensitive column name    echo $row->MyDescription . "<br>\n";   }// Output is://    1//    Iced Coffeeoci_free_statement($stid);oci_close($conn);?>

Example #3 oci_fetch_object() with LOBs

    <?php/*  Before running, create the 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";    // The following will output the first 11 bytes from DESCRIPTION    echo $row->DESCRIPTION->read(11) . "<br>\n"; }// Output is://    1//    A very longoci_free_statement($stid);oci_close($conn);?>

### See Also

- oci_fetch() - Fetches the next row from a query into internal buffers
- oci_fetch_all() - Fetches multiple rows from a query into a two-dimensional array
- oci_fetch_assoc() - Returns the next row from a query as an associative array
- oci_fetch_array() - Returns the next row from a query as an associative or numeric array
- oci_fetch_row() - Returns the next row from a query as a numeric array