Ingres II functionsIngres II
&warn.experimental;
These functions allow you to access Ingres II database servers.
In order to have these functions available, you must compile php
with Ingres support by using the
option.
You need the Open API library and header files included with
Ingres II. If the II_SYSTEM environment variable isn't correctly
set you may have to use
to specify your Ingres installation directory.
When using this extension with Apache, if Apache does not start
and complains with "PHP Fatal error: Unable to start ingres_ii
module in Unknown on line 0" then make sure the environement
variable II_SYSTEM is correctly set. Adding "export
II_SYSTEM="/home/ingres/II" in the script that starts Apache, just
before launching httpd, should be fine.
If you already used PHP extensions to access other database
servers, note that Ingres doesn't allow concurrent queries and/or
transaction over one connection, thus you won't find any result
or transaction handle in this extension. The result of a query
must be treated before sending another query, and a transaction
must be commited or rolled back before opening another
transaction (which is automaticaly done when sending the first
query).
ingres_connect
Open a connection to an Ingres II database
Descriptionresource ingres_connectstring
databasestring
usernamestring
password
&warn.experimental.func;
Returns a Ingres II link resource on success, or &false; on
failure.
ingres_connect opens a connection with the
Ingres database designated by database,
which follows the syntax
[node_id::]dbname[/svr_class].
If some parameters are missing, ingres_connect
uses the values in php.ini for
ingres.default_database,
ingres.default_user, and
ingres.default_password.
The connection is closed when the script ends or when
ingres_close is called on this link.
All the other ingres functions use the last opened link as a
default, so you need to store the returned value only if you use
more than one link at a time.
ingres_connect example
]]>
ingres_connect example using default link
]]>
See also
ingres_pconnect and
ingres_close.
ingres_pconnect
Open a persistent connection to an Ingres II database
Descriptionresource ingres_pconnectstring
databasestring
usernamestring
password
&warn.experimental.func;
Returns a Ingres II link resource on success, or &false; on
failure.
See ingres_connect for parameters details
and examples. There are only 2 differences between
ingres_pconnect and
ingres_connect : First, when connecting, the
function will first try to find a (persistent) link that's
already opened with the same parameters. If one is found, an
identifier for it will be returned instead of opening a new
connection. Second, the connection to the Ingres server will not
be closed when the execution of the script ends. Instead, the
link will remain open for future use
(ingres_close will not close links
established by ingres_pconnect). This type
of link is therefore called 'persistent'.
See also
ingres_connect and
ingres_close.
ingres_closeClose an Ingres II database connectionDescriptionbool ingres_closeresource
link
&warn.experimental.func;
Returns &true; on success, or &false; on failure.
ingres_close closes the connection to
the Ingres server that's associated with the specified link.
If the link parameter isn't
specified, the last opened link is used.
ingres_close isn't usually necessary, as it
won't close persistent connections and all non-persistent connections
are automatically closed at the end of the script.
See also
ingres_connect and
ingres_pconnect.
ingres_querySend a SQL query to Ingres IIDescriptionbool ingres_querystring
queryresource
link
&warn.experimental.func;
Returns &true; on success, or &false; on failure.
ingres_query sends the given
query to the Ingres server. This query
must be a valid SQL query (see the Ingres SQL reference guide)
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 either
call 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 immediatly commited.
Some types of SQL queries can't be sent with this function:
close (see ingres_close)
commit (see ingres_commit)
connect (see ingres_connect)
disconnect (see ingres_close)
get dbeventprepare to commit
rollback (see ingres_rollback)
savepoint
set autocommit (see ingres_autocommit)
all cursor related queries are unsupportedingres_query example
]]>
See also
ingres_fetch_array,
ingres_fetch_object,
ingres_fetch_row,
ingres_commit,
ingres_rollback, and
ingres_autocommit.
ingres_num_rows
Get the number of rows affected or returned by the last query
Descriptionint ingres_num_rowsresource
link
&warn.experimental.func;
For delete, insert or update queries,
ingres_num_rows returns the number of rows
affected by the query. For other queries,
ingres_num_rows returns the number of rows
in the query's result.
This function is mainly meant to get the number of rows
modified in the database. If this function is called before
using ingres_fetch_array,
ingres_fetch_object or
ingres_fetch_row the server will delete
the result's data and the script won't be able to get them.
You should instead retrieve the result's data using one of
these fetch functions in a loop until it returns &false;,
indicating that no more results are available.
See also
ingres_query,
ingres_fetch_array,
ingres_fetch_object, and
ingres_fetch_row.
ingres_num_fields
Get the number of fields returned by the last query
Descriptionint ingres_num_fieldsresource
link
&warn.experimental.func;
ingres_num_fields returns the number of
fields in the results returned by the Ingres server after a call
to ingres_query
See also
ingres_query,
ingres_fetch_array,
ingres_fetch_object, and
ingres_fetch_row.
ingres_field_nameGet the name of a field in a query result.Descriptionstring ingres_field_nameint
indexresource
link
&warn.experimental.func;
ingres_field_name returns the name of a field
in a query result, or &false; on failure.
index is the number of the field and must be
between 1 and the value given by
ingres_num_fields.
See also
ingres_query,
ingres_fetch_array,
ingres_fetch_object and
ingres_fetch_row.
ingres_field_type
Get the type of a field in a query result
Descriptionstring ingres_field_typeint
indexresource
link
&warn.experimental.func;
ingres_field_type returns the type of a
field in a query result, or &false; on failure. Examples of
types returned are "IIAPI_BYTE_TYPE", "IIAPI_CHA_TYPE",
"IIAPI_DTE_TYPE", "IIAPI_FLT_TYPE", "IIAPI_INT_TYPE",
"IIAPI_VCH_TYPE". Some of these types can map to more than one
SQL type depending on the length of the field (see
ingres_field_length). For example
"IIAPI_FLT_TYPE" can be a float4 or a float8. For detailed
information, see the Ingres/OpenAPI User Guide - Appendix C.
index is the number of the field and must
be between 1 and the value given by
ingres_num_fields.
See also
ingres_query,
ingres_fetch_array,
ingres_fetch_object, and
ingres_fetch_row.
ingres_field_nullableTest if a field is nullableDescriptionbool ingres_field_nullableint
indexresource
link
&warn.experimental.func;
ingres_field_nullable returns &true; if the
field can be set to the &null; value and &false; if it can't.
index is the number of the field and must
be between 1 and the value given by
ingres_num_fields.
See also
ingres_query,
ingres_fetch_array,
ingres_fetch_object, and
ingres_fetch_row.
ingres_field_lengthGet the length of a fieldDescriptionint ingres_field_lengthint
indexresource
link
&warn.experimental.func;
ingres_field_length returns the length of a
field. This is the number of bytes used by the server to store
the field. For detailed information, see the Ingres/OpenAPI User
Guide - Appendix C.
index is the number of the field and must
be between 1 and the value given by
ingres_num_fields.
See also
ingres_query,
ingres_fetch_array,
ingres_fetch_object, and
ingres_fetch_row.
ingres_field_precisionGet the precision of a fieldDescriptionint
ingres_field_precisionint indexresource
link
&warn.experimental.func;
ingres_field_precision returns the precision
of a field. This value is used only for decimal, float and money
SQL data types. For detailed information, see the Ingres/OpenAPI
User Guide - Appendix C.
index is the number of the field and must
be between 1 and the value given by
ingres_num_fields.
See also
ingres_query,
ingres_fetch_array,
ingres_fetch_object, and
ingres_fetch_row.
ingres_field_scaleGet the scale of a fieldDescriptionint ingres_field_scaleint
indexresource
link
&warn.experimental.func;
ingres_field_scale returns the scale of a
field. This value is used only for the decimal SQL data
type. For detailed information, see the Ingres/OpenAPI User Guide
- Appendix C.
index is the number of the field and must
be between 1 and the value given by
ingres_num_fields.
See also
ingres_query,
ingres_fetch_array,
ingres_fetch_object, and
ingres_fetch_row.
ingres_fetch_arrayFetch a row of result into an arrayDescriptionarray ingres_fetch_arrayint
result_typeresource
link
&warn.experimental.func;
ingres_fetch_array Returns an array that
corresponds to the fetched row, or &false; if there are no more
rows.
This function is an extended version of
ingres_fetch_row. In addition to storing
the data in the numeric indices of the result array, it also
stores the data in associative indices, using the field names as
keys.
If two or more columns of the result have the same field names,
the last column will take precedence. To access the other
column(s) of the same name, you must use the numeric index of the
column or make an alias for the column.
result_type can be INGRES_NUM for
enumerated array, INGRES_ASSOC for associative array, or
INGRES_BOTH (default).
Speed-wise, the function is identical to
ingres_fetch_object, and almost as quick as
ingres_fetch_row (the difference is
insignificant).
ingres_fetch_array example
]]>
See also
ingres_query,
ingres_num_fields,
ingres_field_name,
ingres_fetch_object, and
ingres_fetch_row.
ingres_fetch_row
Fetch a row of result into an enumerated array
Descriptionarray ingres_fetch_rowresource
link
&warn.experimental.func;
ingres_fetch_row returns an array that
corresponds to the fetched row, or &false; if there are no more
rows. Each result column is stored in an array offset, starting
at offset 1.
Subsequent call to ingres_fetch_row would
return the next row in the result set, or &false; if there are no
more rows.
ingres_fetch_row example
]]>
See also
ingres_num_fields,
ingres_query,
ingres_fetch_array, and
ingres_fetch_object.
ingres_fetch_objectFetch a row of result into an object.Descriptionobject
ingres_fetch_objectint
result_typeresource
link
&warn.experimental.func;
ingres_fetch_object Returns an object that
corresponds to the fetched row, or &false; if there are no more
rows.
This function is similar to
ingres_fetch_array, with one difference - an
object is returned, instead of an array. Indirectly, that means
that you can only access the data by the field names, and not by
their offsets (numbers are illegal property names).
The optional argument result_type is a
constant and can take the following values: INGRES_ASSOC,
INGRES_NUM, and INGRES_BOTH.
Speed-wise, the function is identical to
ingres_fetch_array, and almost as quick as
ingres_fetch_row (the difference is
insignificant).
ingres_fetch_object example
user_id;
echo $row->fullname;
}
?>
]]>
See also
ingres_query,
ingres_num_fields,
ingres_field_name,
ingres_fetch_array, and
ingres_fetch_row.
ingres_rollbackRoll back a transactionDescriptionbool ingres_rollbackresource
link
&warn.experimental.func;
ingres_rollback rolls back the currently
open transaction, actually canceling all changes made to the
database during the transaction.
This closes the transaction. A new one can be open by sending a
query with ingres_query.
See also
ingres_query,
ingres_commit, and
ingres_autocommit.
ingres_commitCommit a transactionDescriptionbool ingres_commitresource
link
&warn.experimental.func;
ingres_commit commits the currently open
transaction, making all changes made to the database permanent.
This closes the transaction. A new one can be open by sending a
query with ingres_query.
You can also have the server commit automaticaly after every
query by calling ingres_autocommit before
opening the transaction.
See also
ingres_query,
ingres_rollback, and
ingres_autocommit.
ingres_autocommitSwitch autocommit on or offDescriptionbool ingres_autocommitresource
link
&warn.experimental.func;
ingres_autocommit is called before opening a
transaction (before the first call to
ingres_query or just after a call to
ingres_rollback or
ingres_autocommit) to switch the
"autocommit" mode of the server on or off (when the script begins
the autocommit mode is off).
When the autocommit mode is on, every query is automaticaly
commited by the server, as if ingres_commit
was called after every call to ingres_query.
See also
ingres_query,
ingres_rollback, and
ingres_commit.