• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • oci_fetch_object()

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

    Returns the next row from a query as an object

    说明

    oci_fetch_object(resource $statement): object

    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.

    要获取 OCI8扩展进行数据类型映射的细节,请参见驱动所支持的数据类型。

    参数

    $statement

    有效的 OCI8 报表标识符由oci_parse()创建,被oci_execute()或REF CURSORstatement 标识执行。

    返回值

    Returns an object. Each attribute of the object corresponds to a column of the row. If there are no more rows in the$statementthen FALSE is returned.

    AnyLOBcolumns are returned as LOB descriptors.

    DATEcolumns are returned as strings formatted to the current date format. The default format can be changed with Oracle environment variables such asNLS_LANGor by a previously executedALTER SESSION SET NLS_DATE_FORMATcommand.

    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 anyNULLdata fields.

    范例

    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 Chips
    oci_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 Coffee
    oci_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 long
    oci_free_statement($stid);
    oci_close($conn);
    ?>
    

    参见

    Please note that you can still reference a column that has a very complex name by using the curly syntax as shown in this example:
    <?php
    $queryStr = 'SELECT COUNT(*) FROM FOOBAR'; //Complex name!
     // parse and exec...
    $queryObj = oci_fetch_object($quertStmt);
     
    echo 'Count: ' . $queryObj->{'COUNT(*)'}; //Curly syntax reference
    ?>