ingres_query

Send an SQL query to Ingres

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

`ingres_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_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.

### Related Configurations

See also the ingres.describe, ingres.scrollable 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.

  Data inside the query should be properly escaped.

  The following types of SQL queries cannot be sent with this function:

  - `close` (see `ingres_close`)

  - `commit` (see `ingres_commit`)

  - `connect` (see `ingres_connect`)

  - `disconnect` (see `ingres_close`)

  - `get dbevent`

  - `prepare to commit`

  - `rollback` (see `ingres_rollback`)

  - `savepoint`

  - `set autocommit` (see `ingres_autocommit`)

  - all cursor-related queries are unsupported

`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. When ingres.describe is enabled, this parameter can be ignored as the driver automatically fetches the expected parameter types from the server.

  Type code | Ingres type
  a | `BOOLEAN`
  b | `BYTE`
  B | `LONG BYTE/BLOB`
  c | `CHAR`
  d | `DATE/ANSIDATE/TIMESTAMP/TIME`
  f | `FLOAT`
  i | `INTEGER`
  L | `LONG TEXT`
  m | `MONEY`
  M | `LONG NVARCHAR`
  n | `NCHAR`
  N | `NVARCHAR`
  t | `TEXT`
  v | `VARCHAR`
  V | `LONG VARCHAR`

&reftitle.returnvalues;

`ingres_query` returns a query result identifier on success else it returns &false;. To see if an error occurred use `ingres_errno`, `ingres_error` or `ingres_errsqlstate`.

&reftitle.examples;

### Send a simple select

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

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

### Passing query parameters to `ingres_query`

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

    $params[] = "Emma";
    $query = "select * from user_profile where up_first = ?";
    $result = ingres_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_query($link, $query , $params, $param_types);

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

    ingres_commit($link);

    ingres_close($link);
    ?>

&reftitle.seealso;

- `ingres_unbuffered_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`