downloads | documentation | faq | getting help | mailing lists | reporting bugs | sites | links | my 
search for in the  
view the version of this page
Last updated: Thu, 21 Aug 2003

XLIII. InterBase functions


InterBase is a popular database put out by Borland/Inprise. More information about InterBase is available at Oh, by the way, InterBase just joined the open source movement!

Note: Full support for InterBase 6 was added in PHP 4.0.

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 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. Therfore you don't need to copy gds32.dll from the DLL folder.

Runtime Configuration

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

Table 1. InterBase configuration options

For further details and definition of the PHP_INI_* constants see ini_set().

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.


IBASE_TEXT (integer)


IBASE_WRITE (integer)

Access mode

IBASE_READ (integer)

Access mode


Isolation level


Isolation level


Isolation level (default)



IBASE_NOWAIT (integer)

Lock resolution

IBASE_WAIT (integer)

Lock resolution (default)


IBASE_DATE (integer)

IBASE_TIME (integer)

Table of Contents
ibase_add_user --  Add a user to a security database (only for IB6 or later)
ibase_blob_add --  Add data into a newly created blob
ibase_blob_cancel --  Cancel creating blob
ibase_blob_close --  Close blob
ibase_blob_create --  Creates 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 -- Commit a transaction
ibase_connect --  Open a connection to an InterBase database
ibase_delete_user --  Delete a user from a security database (only for IB6 or later)
ibase_errmsg --  Returns 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_query --  Free memory allocated by a prepared query
ibase_free_result -- Free a result set
ibase_modify_user --  Modify a user to a security database (only for IB6 or later)
ibase_num_fields --  Get the number of fields in a result set
ibase_pconnect --  Creates an 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_rollback -- Rolls back a transaction
ibase_timefmt --  Sets the format of timestamp, date and time type columns returned from queries
ibase_trans -- Begin a transaction

add a note add a note User Contributed Notes
InterBase functions
felixlee at singnet dot com dot sg
03-Jul-2003 01:33
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 */
lars at dybdahl dot net
20-Sep-2002 09:32
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();
interbase at almico dot com
06-Sep-2002 04:24
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
theynich_s at yahoo dot com
12-May-2002 01:16
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 :


$filename BASENAME(__FILE__);
$strsql "Your SQL";
$result ibase_query($connection$strsql);

ibase_num_rows($query) { //I have pick it from
$i 0;
 while (
ibase_fetch_row($query)) {
$nrow ibase_num_rows($result);//sum of row

$strSQL "your SQL";
$result ibase_query($connection$strSQL);

if (!isset(
$page 1;

$i 0;
$recperpage 4;
$norecord = ($page 1) * $recperpage;
if (
$j $norecord and list($code$name)= ibase_fetch_row($result)){

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)
"<a href=".$filename."?page=".$decr.">Prev</a>";
                <?if ($page == $numOfPage)
"<a href=".$filename."?page=".$incr.">Next</a>";?>
johan at essay dot org
07-Aug-2000 09:24
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 !

 Last updated: Thu, 21 Aug 2003
show source | credits | sitemap | mirror sites 
Copyright © 2001-2003 The PHP Group
All rights reserved.
This mirror generously provided by:
Last updated: Sat 01 Nov 2003 04:13:36 EST EST