Delicious Bookmark this on Delicious Share on Facebook SlashdotSlashdot It! Digg! Digg

PHP : Function Reference : Firebird/InterBase Functions

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 »

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 »


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:

magic_quotes_sybase = On ?>



To enable InterBase support configure PHP --with-interbase[=DIR], where DIR is the InterBase base install directory, which defaults to /usr/interbase.

Note to Win32 Users:

In order for this extension to work, there are DLL files that must be available to the Windows system PATH. See the FAQ titled "How do I add my PHP directory to the PATH on Windows" for information on how to do this. Although copying DLL files from the PHP folder into the Windows system directory also works (because the system directory is by default in the systems PATH), it is not recommended. This extension requires the following files to be in the PATH: gds32.dll

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 worry because gds32.dll will already be in the PATH.

Runtime Configuration

The behaviour of these functions is affected by settings in php.ini.

Table 97. InterBase configuration options

Name Default Changeable Changelog
ibase.allow_persistent "1" PHP_INI_SYSTEM  
ibase.max_persistent "-1" PHP_INI_SYSTEM  
ibase.max_links "-1" PHP_INI_SYSTEM  
ibase.default_db NULL PHP_INI_SYSTEM Available since PHP 5.0.0.
ibase.default_user NULL PHP_INI_ALL  
ibase.default_password NULL PHP_INI_ALL  
ibase.default_charset NULL PHP_INI_ALL Available since PHP 5.0.0.
ibase.timestampformat "%Y-%m-%d %H:%M:%S" PHP_INI_ALL  
ibase.dateformat "%Y-%m-%d" PHP_INI_ALL  
ibase.timeformat "%H:%M:%S" PHP_INI_ALL  

For further details and definitions of the PHP_INI_* constants, see the Appendix I, php.ini directives.

Here's a short explanation of the configuration directives.

ibase.allow_persistent boolean

Whether to allow persistent connections to Firebird/InterBase.

ibase.max_persistent integer

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.

ibase.max_links integer

The maximum number of Firebird/InterBase connections per process, including persistent connections.

ibase.default_db string

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.

ibase.default_user string

The user name to use when connecting to a database if no user name is specified.

ibase.default_password string

The password to use when connecting to a database if no password is specified.

ibase.default_charset string

The character set to use when connecting to a database if no character set is specified.

ibase.timestampformat string
ibase.dateformat string
ibase.timeformat string

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.

Resource Types

Predefined Constants

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 98. Firebird/InterBase transaction flags

Constant Description
IBASE_DEFAULT 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_VERSION or 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 transaction.
IBASE_WAIT Indicated that a transaction should wait and retry when a conflict occurs.
IBASE_NOWAIT Indicated that a transaction should fail immediately when a conflict occurs.

The following constants can be passed to ibase_fetch_row(), ibase_fetch_assoc() or ibase_fetch_object() to specify fetch behaviour.

Table 99. Firebird/InterBase fetch flags

Constant Description
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(), ibase_backup(), ibase_restore() 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()

Table of Contents

ibase_add_user — Add a user to a security database (only for IB6 or later)
ibase_affected_rows — Return the number of rows that were affected by the previous query
ibase_backup — Initiates a backup task in the service manager and returns immediately
ibase_blob_add — Add data into a newly created blob
ibase_blob_cancel — Cancel creating blob
ibase_blob_close — Close blob
ibase_blob_create — Create a new blob for adding data
ibase_blob_echo — Output blob contents to browser
ibase_blob_get — Get len bytes data from open blob
ibase_blob_import — Create blob, copy file in it, and close it
ibase_blob_info — Return blob length and other useful info
ibase_blob_open — Open blob for retrieving data parts
ibase_close — Close a connection to an InterBase database
ibase_commit_ret — Commit a transaction without closing it
ibase_commit — Commit a transaction
ibase_connect — Open a connection to an InterBase database
ibase_db_info — Request statistics about a database
ibase_delete_user — Delete a user from a security database (only for IB6 or later)
ibase_drop_db — Drops a database
ibase_errcode — Return an error code
ibase_errmsg — Return error messages
ibase_execute — Execute a previously prepared query
ibase_fetch_assoc — Fetch a result row from a query as an associative array
ibase_fetch_object — Get an object from a InterBase database
ibase_fetch_row — Fetch a row from an InterBase database
ibase_field_info — Get information about a field
ibase_free_event_handler — Cancels a registered event handler
ibase_free_query — Free memory allocated by a prepared query
ibase_free_result — Free a result set
ibase_gen_id — Increments the named generator and returns its new value
ibase_maintain_db — Execute a maintenance command on the database server
ibase_modify_user — Modify a user to a security database (only for IB6 or later)
ibase_name_result — Assigns a name to a result set
ibase_num_fields — Get the number of fields in a result set
ibase_num_params — Return the number of parameters in a prepared query
ibase_param_info — Return information about a parameter in a prepared query
ibase_pconnect — Open a persistent connection to an InterBase database
ibase_prepare — Prepare a query for later binding of parameter placeholders and execution
ibase_query — Execute a query on an InterBase database
ibase_restore — Initiates a restore task in the service manager and returns immediately
ibase_rollback_ret — Roll back a transaction without closing it
ibase_rollback — Roll back a transaction
ibase_server_info — Request information about a database server
ibase_service_attach — Connect to the service manager
ibase_service_detach — Disconnect from the service manager
ibase_set_event_handler — Register a callback function to be called when events are posted
ibase_timefmt — Sets the format of timestamp, date and time type columns returned from queries
ibase_trans — Begin a transaction
ibase_wait_event — Wait for an event to be posted by the database

Code Examples / Notes » ref.ibase


This example have 2 problems my be the autor writes it to fast but in the first case use one var for define user pass and and the use other one for call them and in secon step use comas after the ;
$db = '/path/to/database.gdb';
$user = 'username';
$password = 'password';
$res = ibase_connect($db,$dbuser,$dbpass) or die("
" . ibase_errmsg());
// Query
$sql="SELECT * FROM table;"


Simple function to retrieve the results of an SQL statement into an array, will also cater for BLOB fields:
function interbase_sql_exec ($sql) {
  $dataArr = array();
  $host = "svrname:path\filename.GDB";
  $username = "whatever";
  $password = "******";
  $connection = ibase_connect ($host, $username, $password,'ISO8859_1', '100', '1');
  $rid = @ibase_query ($connection, $sql);
  if ($rid===false) errorHandle(ibase_errmsg(),$sql);
  $coln = ibase_num_fields($rid);
  $blobFields = array();
  for ($i=0; $i < $coln; $i++) {
      $col_info = ibase_field_info($rid, $i);
      if ($col_info["type"]=="BLOB") $blobFields[$i] = $col_info["name"];
  while ($row = ibase_fetch_row ($rid)) {
      foreach ($blobFields as $field_num=>$field_name) {
          $blobid = ibase_blob_open($row[$field_num]);
          $row[$field_num] = ibase_blob_get($blobid,102400);
      $dataArr[] = $row;
  ibase_close ($connection);
  return $dataArr;


It is not possible to use interbase/firebird without initiating transactions. It seems that transactions are not automatically committed or rolled back at the end of a script, so remember to end all interbase enabled scripts with ibase_rollback() or ibase_commit().
Worse is, that if you use ibase_pconnect (recommended), transactions survive from one request to the next. So that if you don't rollback your transaction at the end of the script, another user's request might continue the transaction that the first request opened.
This has two implications:
1) Clicking refresh in your browser won't make you see newer data, because you still watch data from the same transaction.
2) Some php scripts might fail occassionally and not fail in other occasions, depending on with apache server thread and thereby which transaction they start using.
Unfortunately, there is no such thing as
if (ibase_intransaction()) ibase_rollback();
so be sure that ALL your scripts end with an ibase_rollback() or ibase_commit();


If you are using VirtualHosts with Apache, you might find useful the following directive:
php_flag magic_quotes_sybase on
Use it in any VirtualHost and it will be set locally to that VirtualHost without interfering with any global setting.
This is an example:
<VirtualHost 555.666.777.888>
  DirectoryIndex index.php index.htm
  php_flag magic_quotes_sybase on


Here's an example for getting results back from stored procedure in firebird.
The example make use of the stored procedure in Employee.gdb and the show_langs procedure.

$host = 'localhost:X:/firebird/examples/Employee.gdb';
$dbh = ibase_connect ( $host, $username, $password ) or die ("error in db connect");
$stmt="Select * from SHOW_LANGS('SRep',4,'Italy')";
$query = ibase_prepare($stmt);
$row = ibase_fetch_row($rs);
echo $row[0];
/* free result */
/* close db */


Here is a minimalistic code example. Be sure to create an user and a database in order to make it work.
// Minimalistic code example
// Connection
$db = '/path/to/database.gdb';
$user = 'username';
$password = 'password';
$res = ibase_connect($db,$dbuser,$dbpass) or die("
" . ibase_errmsg());
// Query
$sql="SELECT * FROM table;"
$result=ibase_query($res,$sql) or die(ibase_errmsg());
// use $row->FIELDNAME not $row->fieldname
print $row->FIELDNAME;
// Closing
ibase_close($res) or die("
" . ibase_errmsg());
The following code can be used when creating tables in order to get auto incrementing fields:
// This function generates an autoincrement field, such as MySQL AUTO_INCREMENT.
function generate_autoincrement($tablename,$primarykey){
// * Generator
dbexec('CREATE GENERATOR GEN_' . $tablename . '_PK;');
// * Trigger
dbexec('CREATE TRIGGER INC_' . $primarykey . ' FOR ' . $tablename
. chr(13) . 'AS'
. chr(13) . 'BEGIN'
. chr(13) . 'IF (NEW.' . $primarykey . ' IS NULL) THEN'
. chr(13) . 'NEW.' . $primarykey . '= GEN_ID(GEN_' . $tablename . '_PK, 1);'
. chr(13) . 'END');
Usage: <?php generate_autoincrement('table','column name'); ?>


Hello PHP Mania,
i have made a paging for PHP with Interbase...... :)
i hope it usefull and work....:)
it`s a litle bit of example :
$connection = ibase_connect($yourdb, $user, $password);
$filename = BASENAME(__FILE__);
$strsql = "Your SQL";
$result = ibase_query($connection, $strsql);
function ibase_num_rows($query) { //I have pick it from
$i = 0;
while (ibase_fetch_row($query)) {
return $i;
$nrow = ibase_num_rows($result);//sum of row
$strSQL = "your SQL";
$result = ibase_query($connection, $strSQL);
if (!isset($page))
 $page = 1;
$$i = 0;
$recperpage = 4;
$norecord = ($page - 1) * $recperpage;
if ($norecord){
 while($j < $norecord and list($code, $name)= ibase_fetch_row($result)){
echo "<table>";
while (list($code, $name)= ibase_fetch_row($result) and $i < $recperpage){
<td width="5%"><? echo $code; ?></td>
<td><? echo $name; ?></td>
$incr = $page + 1;
if ($page > 1) $decr = $page - 1;
$numOfPage = ceil($nrow/$recperpage);
<td colspan="3" align="center"><?if ($page <= 1)
echo "<span>Prev</span>";
  echo "<a href=".$filename."?page=".$decr.">Prev</a>";
<?if ($page == $numOfPage)
echo "<span>Next</span>";
  echo "<a href=".$filename."?page=".$incr.">Next</a>";?>


For those who have problem with returning values from Stored Procedures in PHP-Interbase,  I have found a solution.   Use a select sentence like this:
select * from sp_prodecure(param, ...)
However, it is important that the procedure has a SUSPEND statement or else the procedure won't return any values.
But the "message length" (see above note) bug that you encounter when you try to execute a procedure should be fixed !

Change Language

Follow Navioo On Twitter
.NET Functions
Apache-specific Functions
Alternative PHP Cache
Advanced PHP debugger
Array Functions
Aspell functions [deprecated]
BBCode Functions
BCMath Arbitrary Precision Mathematics Functions
PHP bytecode Compiler
Bzip2 Compression Functions
Calendar Functions
CCVS API Functions [deprecated]
Class/Object Functions
Classkit Functions
ClibPDF Functions [deprecated]
COM and .Net (Windows)
Crack Functions
Character Type Functions
Cybercash Payment Functions
Credit Mutuel CyberMUT functions
Cyrus IMAP administration Functions
Date and Time Functions
DB++ Functions
Database (dbm-style) Abstraction Layer Functions
dBase Functions
DBM Functions [deprecated]
dbx Functions
Direct IO Functions
Directory Functions
DOM Functions
DOM XML Functions
enchant Functions
Error Handling and Logging Functions
Exif Functions
Expect Functions
File Alteration Monitor Functions
Forms Data Format Functions
Fileinfo Functions
filePro Functions
Filesystem Functions
Filter Functions
Firebird/InterBase Functions
Firebird/Interbase Functions (PDO_FIREBIRD)
FriBiDi Functions
FrontBase Functions
FTP Functions
Function Handling Functions
GeoIP Functions
Gettext Functions
GMP Functions
gnupg Functions
Haru PDF Functions
hash Functions
Hyperwave Functions
Hyperwave API Functions
i18n Functions
IBM Functions (PDO_IBM)
iconv Functions
ID3 Functions
IIS Administration Functions
Image Functions
Imagick Image Library
Informix Functions
Informix Functions (PDO_INFORMIX)
Ingres II Functions
IRC Gateway Functions
PHP / Java Integration
JSON Functions
LDAP Functions
libxml Functions
Lotus Notes Functions
LZF Functions
Mail Functions
Mailparse Functions
Mathematical Functions
MaxDB PHP Extension
MCAL Functions
Mcrypt Encryption Functions
MCVE (Monetra) Payment Functions
Memcache Functions
Mhash Functions
Mimetype Functions
Ming functions for Flash
Miscellaneous Functions
mnoGoSearch Functions
Microsoft SQL Server Functions
Microsoft SQL Server and Sybase Functions (PDO_DBLIB)
Mohawk Software Session Handler Functions
mSQL Functions
Multibyte String Functions
muscat Functions
MySQL Functions
MySQL Functions (PDO_MYSQL)
MySQL Improved Extension
Ncurses Terminal Screen Control Functions
Network Functions
Newt Functions
NSAPI-specific Functions
Object Aggregation/Composition Functions
Object property and method call overloading
Oracle Functions
ODBC Functions (Unified)
ODBC and DB2 Functions (PDO_ODBC)
OpenAL Audio Bindings
OpenSSL Functions
Oracle Functions [deprecated]
Oracle Functions (PDO_OCI)
Output Control Functions
Ovrimos SQL Functions
Paradox File Access
Parsekit Functions
Process Control Functions
Regular Expression Functions (Perl-Compatible)
PDF Functions
PDO Functions
Phar archive stream and classes
PHP Options&Information
POSIX Functions
Regular Expression Functions (POSIX Extended)
PostgreSQL Functions
PostgreSQL Functions (PDO_PGSQL)
Printer Functions
Program Execution Functions
PostScript document creation
Pspell Functions
qtdom Functions
Rar Functions
GNU Readline
GNU Recode Functions
RPM Header Reading Functions
runkit Functions
SAM - Simple Asynchronous Messaging
Satellite CORBA client extension [deprecated]
SCA Functions
SDO Functions
SDO XML Data Access Service Functions
SDO Relational Data Access Service Functions
SESAM Database Functions
PostgreSQL Session Save Handler
Session Handling Functions
Shared Memory Functions
SimpleXML functions
SNMP Functions
SOAP Functions
Socket Functions
Standard PHP Library (SPL) Functions
SQLite Functions
SQLite Functions (PDO_SQLITE)
Secure Shell2 Functions
Statistics Functions
Stream Functions
String Functions
Subversion Functions
Shockwave Flash Functions
Swish Functions
Sybase Functions
TCP Wrappers Functions
Tidy Functions
Tokenizer Functions
Unicode Functions
URL Functions
Variable Handling Functions
Verisign Payflow Pro Functions
vpopmail Functions
W32api Functions
WDDX Functions
win32ps Functions
win32service Functions
xattr Functions
xdiff Functions
XML Parser Functions
XML-RPC Functions
XMLReader functions
XMLWriter Functions
XSL functions
XSLT Functions
YAZ Functions
YP/NIS Functions
Zip File Functions
Zlib Compression Functions
eXTReMe Tracker