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("<br>" . ibase_errmsg());
// Query
$sql="SELECT * FROM table;"
Firebird/InterBase Functions
Introductie
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/.
Note: 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
Afhankelijkheden
Installatie
To enable InterBase support configure PHP --with-interbase[=DIR], where DIR is the InterBase base install directory, which defaults to /usr/interbase.
Note: 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.
Configuratie tijdens scriptuitvoer
Het gedrag van deze functies wordt beïnvloed vanuit php.ini.
| 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 |
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
Voorgedefinieerde constanten
Deze constanten worden gedefinieerd door deze extensie, en zullen alleen beschikbaar zijn als de extensie met PHP is meegecompileerd, of als deze dynamisch is geladen vanuit een script.
The following constants can be passed to ibase_trans() to specify transaction behaviour.
| 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.
| 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.
- IBASE_BKP_IGNORE_CHECKSUMS
- IBASE_BKP_IGNORE_LIMBO
- IBASE_BKP_METADATA_ONLY
- IBASE_BKP_NO_GARBAGE_COLLECT
- IBASE_BKP_OLD_DESCRIPTIONS
- IBASE_BKP_NON_TRANSPORTABLE
- IBASE_BKP_CONVERT
- Options to ibase_backup()
- IBASE_RES_DEACTIVATE_IDX
- IBASE_RES_NO_SHADOW
- IBASE_RES_NO_VALIDITY
- IBASE_RES_ONE_AT_A_TIME
- IBASE_RES_REPLACE
- IBASE_RES_CREATE
- IBASE_RES_USE_ALL_SPACE
- Options to ibase_restore()
- IBASE_PRP_PAGE_BUFFERS
- IBASE_PRP_SWEEP_INTERVAL
- IBASE_PRP_SHUTDOWN_DB
- IBASE_PRP_DENY_NEW_TRANSACTIONS
- IBASE_PRP_DENY_NEW_ATTACHMENTS
- IBASE_PRP_RESERVE_SPACE
- IBASE_PRP_RES_USE_FULL
- IBASE_PRP_RES
- IBASE_PRP_WRITE_MODE
- IBASE_PRP_WM_ASYNC
- IBASE_PRP_WM_SYNC
- IBASE_PRP_ACCESS_MODE
- IBASE_PRP_AM_READONLY
- IBASE_PRP_AM_READWRITE
- IBASE_PRP_SET_SQL_DIALECT
- IBASE_PRP_ACTIVATE
- IBASE_PRP_DB_ONLINE
- IBASE_RPR_CHECK_DB
- IBASE_RPR_IGNORE_CHECKSUM
- IBASE_RPR_KILL_SHADOWS
- IBASE_RPR_MEND_DB
- IBASE_RPR_VALIDATE_DB
- IBASE_RPR_FULL
- IBASE_RPR_SWEEP_DB
- Options to ibase_maintain_db()
- IBASE_STS_DATA_PAGES
- IBASE_STS_DB_LOG
- IBASE_STS_HDR_PAGES
- IBASE_STS_IDX_PAGES
- IBASE_STS_SYS_RELATIONS
- Options to ibase_db_info()
- IBASE_SVC_SERVER_VERSION
- IBASE_SVC_IMPLEMENTATION
- IBASE_SVC_GET_ENV
- IBASE_SVC_GET_ENV_LOCK
- IBASE_SVC_GET_ENV_MSG
- IBASE_SVC_USER_DBPATH
- IBASE_SVC_SVR_DB_INFO
- IBASE_SVC_GET_USERS
- 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
Firebird/InterBase
25-Sep-2007 12:01
01-Jul-2007 02:11
Here is a minimalistic code example. Be sure to create an user and a database in order to make it work.
<?php
// Minimalistic code example
// Connection
$db = '/path/to/database.gdb';
$user = 'username';
$password = 'password';
$res = ibase_connect($db,$dbuser,$dbpass) or die("<br>" . ibase_errmsg());
// Query
$sql="SELECT * FROM table;"
$result=ibase_query($res,$sql) or die(ibase_errmsg());
while($row=ibase_fetch_object($result)){
// use $row->FIELDNAME not $row->fieldname
print $row->FIELDNAME;
}
ibase_free_result($result);
// Closing
ibase_close($res) or die("<br>" . ibase_errmsg());
?>
The following code can be used when creating tables in order to get auto incrementing fields:
<?php
// 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) . 'ACTIVE BEFORE INSERT POSITION 0'
. 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'); ?>
03-Jun-2004 11:59
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);
ibase_blob_close($blobid);
}
$dataArr[] = $row;
}
ibase_close ($connection);
return $dataArr;
}
02-Jul-2003 11: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';
$username='SYSDBA';
$password='masterkey';
$dbh = ibase_connect ( $host, $username, $password ) or die ("error in db connect");
$stmt="Select * from SHOW_LANGS('SRep',4,'Italy')";
$query = ibase_prepare($stmt);
$rs=ibase_execute($query);
$row = ibase_fetch_row($rs);
echo $row[0];
/* free result */
ibase_free_query($query);
ibase_free_result($rs);
/* close db */
ibase_close($dbh);
?>
20-Sep-2002 07: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();
05-Sep-2002 02: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>
ServerName www.samplehost.com
DirectoryIndex index.php index.htm
php_flag magic_quotes_sybase on
</VirtualHost>
11-May-2002 11: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 :
<?
$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 bg_idol@hotmail.com
$i = 0;
while (ibase_fetch_row($query)) {
$i++;
}
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){
$j=0;
while($j < $norecord and list($code, $name)= ibase_fetch_row($result)){
$j++;
}
}
echo "<table>";
while (list($code, $name)= ibase_fetch_row($result) and $i < $recperpage){
?>
<tr>
<td width="5%"><? echo $code; ?></td>
<td><? echo $name; ?></td>
</tr>
<?
$i++;
}
$incr = $page + 1;
if ($page > 1) $decr = $page - 1;
$numOfPage = ceil($nrow/$recperpage);
?>
<tr>
<td colspan="3" align="center"><?if ($page <= 1)
echo "<span>Prev</span>";
else
echo "<a href=".$filename."?page=".$decr.">Prev</a>";
?>
<?if ($page == $numOfPage)
echo "<span>Next</span>";
else
echo "<a href=".$filename."?page=".$incr.">Next</a>";?>
</td>
</tr>
</table>
06-Aug-2000 07: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 !
