ingres_unbuffered_query

Send an unbuffered SQL query to Ingres

&reftitle.description; `mixed` `ingres_unbuffered_query` `resource` `link` `string` `query` `array` `params` `string` `types`

`ingres_unbuffered_query` sends the given `query` to the Ingres server.

The query becomes part of the currently open transaction. If there is no open transaction, `ingres_unbuffered_query` opens a new transaction. To close the transaction, you can call either `ingres_commit` to commit the changes made to the database or `ingres_rollback` to cancel these changes. When the script ends, any open transaction is rolled back (by calling `ingres_rollback`). You can also use `ingres_autocommit` before opening a new transaction to have every SQL query immediately committed. Ingres allows only a single unbuffered statement to be active at any one time. The extension will close any active unbuffered statements before executing any SQL. In addition you cannot use `ingres_result_seek` to position the row before fetching.

### Related Configurations

See also the ingres.describe and ingres.utf8 directives in Runtime Configuration.

&reftitle.parameters;

`link`

- The connection link identifier

`query`

- A valid SQL query (see the Ingres SQL reference guide) in the Ingres documentation. See the query parameter in `ingres_query` for a list of SQL statements that cannot be executed via `ingres_unbuffered_query`.

  Data inside the query should be properly escaped.

`params`

- An array of parameter values to be used with the query

`types`

- A string containing a sequence of types for the parameter values passed. See the types parameter in `ingres_query` for the list of type codes.

&reftitle.returnvalues;

`ingres_unbuffered_query` returns a query result identifier when there are rows to fetch; else it returns &false; when there are no rows, as is the case of an INSERT, UPDATE, or DELETE statement. To see if an error occurred, use `ingres_errno`, `ingres_error`, or `ingres_errsqlstate`.

&reftitle.examples;

### Issue a simple un-buffered select

    <?php
    $link = ingres_connect("demodb");

    $result = ingres_unbuffered_query($link, "select * from user_profile");
    while ($row = ingres_fetch_row($result)) {
        echo $row[1];
        echo $row[2];
    }
    ?>

### Passing query parameters to `ingres_unbuffered_query`

    <?php
    $link = ingres_connect("demodb");

    $params[] = "Emma";
    $query = "select * from user_profile where up_first = ?";
    $result = ingres_unbuffered_query($link, $query, $params);
    while ($row = ingres_fetch_row($result)) {
        echo $row[1];
        echo $row[2];
    }
    ?>

### Inserting a BLOB with parameter types

    <?php
    $link = ingres_connect("demodb");

    //Open a photo
    $fh = fopen("photo.jpg","r");
    $blob_data = stream_get_contents($fh);
    fclose($fh);

    //Prepare parameters
    $params[] = $blob_data;
    $params[] = 1201;

    //Define parameter types
    $param_types = "Bi";

    $query = "update user_profile set up_image = ? where up_id = ?";
    $result = ingres_unbuffered_query($link, $query , $params, $param_types);

    if (ingres_errno())
    {
        echo ingres_errno() . "-" . ingres_error() . "\n";
    }
    ?>

&reftitle.seealso;

- `ingres_query`
- `ingres_fetch_array`
- `ingres_fetch_assoc`
- `ingres_fetch_object`
- `ingres_fetch_row`
- `ingres_commit`
- `ingres_rollback`
- `ingres_autocommit`
- `ingres_set_environment`
- `ingres_errno`
- `ingres_error`