XLI. Firebird/InterBase Functions
Firebird/InterBase is a relational database offering many ANSI SQL-92 features
that runs on Linux, Windows, and a variety of Unix platforms. Firebird/InterBase
offers excellent concurrency, high performance, and powerful language
support for stored procedures and triggers. It has been used in production
systems, under a variety of names since 1981.
InterBase is the name of the closed-source variant of this RDBMS that
was developed by Borland/Inprise. More information about InterBase is
available at http://www.borland.com/interbase/.
Firebird is a commercially independent project of C and C++ programmers,
technical advisors and supporters developing and enhancing a multi-platform
relational database management system based on the source code released by
Inprise Corp (now known as Borland Software Corp) under the InterBase
Public License v.1.0 on 25 July, 2000. More information about Firebird is
available at http://www.firebirdsql.org/.
This extension supports InterBase versions 5 and up and all versions of Firebird.
Support for InterBase version 5.x will be dropped in PHP 5.
This database uses a single quote (') character for escaping, a
behavior similar to the Sybase database, add to your
php.ini the following directive:
To enable InterBase support configure PHP
--with-interbase[=DIR], where DIR is the
InterBase base install directory, which defaults to
Note to Win32 Users:
In order to enable this module on a Windows environment, you must copy
gds32.dll from the DLL folder of the PHP/Win32 binary
package to the SYSTEM32 folder of your windows machine. (Ex: C:\WINNT\SYSTEM32
or C:\WINDOWS\SYSTEM32). In case you installed the InterBase database server on the
same machine PHP is running on, you will have this DLL already. Therefore you don't
need to copy gds32.dll from the DLL folder.
The behaviour of these functions is affected by settings in php.ini.
Table 1. InterBase configuration options
|ibase.default_db||NULL||PHP_INI_SYSTEM||Available since PHP 5.0.0.|
|ibase.default_charset||NULL||PHP_INI_ALL||Available since PHP 5.0.0.|
|ibase.timestampformat||"%Y-%m-%d %H:%M:%S"||PHP_INI_ALL|| |
For further details and definitions of the
PHP_INI_* constants, see the Appendix G
Here's a short explanation of
the configuration directives.
Whether to allow
The maximum number of persistent Firebird/InterBase connections per
process. New connections created with ibase_pconnect() will be non-persistent
if this number would be exceeded.
The maximum number of Firebird/InterBase connections per process, including
The default database to connect to when ibase_[p]connect() is called
without specifying a database name. If this value is set and SQL safe
mode is enabled, no other connections than to this database will be allowed.
The user name to use when connecting to a database
if no user name is specified.
The password to use when connecting to a database
if no password is specified.
The character set to use when connecting to a database
if no character set is specified.
These directives are used to set the date and time formats
that are used when returning dates and times from a result set,
or when binding arguments to date and time parameters.
The constants below are defined by this extension, and
will only be available when the extension has either
been compiled into PHP or dynamically loaded at runtime.
The following constants can be passed to ibase_trans()
to specify transaction behaviour.
Table 2. Firebird/InterBase transaction flags
The default transaction settings are to be used. This default is
determined by the client library, which defines it as
IBASE_WRITE|IBASE_CONCURRENCY|IBASE_WAIT in most cases.|
|IBASE_READ||Starts a read-only transaction.|
|IBASE_WRITE||Starts a read-write transaction.|
|IBASE_CONSISTENCY||Starts a transaction with the isolation level set to
'consistency', which means the transaction cannot read from tables
that are being modified by other concurrent transactions.|
|IBASE_CONCURRENCY||Starts a transaction with the isolation level set to
'concurrency' (or 'snapshot'), which means the transaction
has access to all tables, but cannot see changes that were committed
by other transactions after the transaction was started.|
|IBASE_COMMITTED||Starts a transaction with the isolation level set to
'read committed'. This flag should be combined with either
IBASE_REC_NO_VERSION. This isolation level
allows access to changes that were committed after the transaction
was started. If IBASE_REC_NO_VERSION was
specified, only the latest version of a row can be read. If
IBASE_REC_VERSION was specified, a row can
even be read when a modification to it is pending in a concurrent
|IBASE_WAIT||Indicated that a transaction should wait and retry when a
|IBASE_NOWAIT||Indicated that a transaction should fail immediately when a
The following constants can be passed to ibase_fetch_row(),
ibase_fetch_assoc() or ibase_fetch_object()
to specify fetch behaviour.
Table 3. Firebird/InterBase fetch flags
|IBASE_FETCH_BLOBS||Also available as IBASE_TEXTfor backward
compatibility. Causes BLOB contents to be fetched inline, instead of
being fetched as BLOB identifiers.|
|IBASE_FETCH_ARRAYS||Causes arrays to be fetched inline. Otherwise, array
identifiers are returned. Array identifiers can only be used as
arguments to INSERT operations, as no functions to handle array
identifiers are currently available.
|IBASE_UNIXTIME||Causes date and time fields not to be returned as strings,
but as UNIX timestamps (the number of seconds since the epoch, which
is 1-Jan-1970 0:00 UTC). Might be problematic if used with dates
before 1970 on some systems.
The following constants are used to pass requests and options to the service
API functions (ibase_server_info(), ibase_db_info(),
and ibase_maintain_db()). Please refer to
the Firebird/InterBase manuals for the meaning of these options.
Options to ibase_backup()
Options to ibase_restore()
Options to ibase_maintain_db()
Options to ibase_db_info()
Options to ibase_server_info()