Firebird/InterBase 関数

目次

  • ibase_add_user — セキュリティデータベースにユーザーを追加する
  • ibase_affected_rows — 直近のクエリで変更された行の数を返す
  • ibase_backup — サービスマネージャのバックアップタスクを起動し、すぐに結果を返す
  • ibase_blob_add — 生成された blob にデータを追加する
  • ibase_blob_cancel — blob の生成を取り消す
  • ibase_blob_close — blob を閉じる
  • ibase_blob_create — データを追加するために blob を生成する
  • ibase_blob_echo — ブラウザに blob の内容を出力する
  • ibase_blob_get — オープンした blob から len バイト分のデータを取得する
  • ibase_blob_import — blob を生成し、ファイルをコピーし、閉じる
  • ibase_blob_info — blob の長さと他の便利な情報を返す
  • ibase_blob_open — データの一部を取得するために blob をオープンする
  • ibase_close — InterBase データベースへの接続を閉じる
  • ibase_commit_ret — トランザクションを閉じずにコミットする
  • ibase_commit — トランザクションをコミットする
  • ibase_connect — データベースへの接続をオープンする
  • ibase_db_info — データベースについての統計情報を要求する
  • ibase_delete_user — セキュリティデータベースからユーザーを削除する
  • ibase_drop_db — データベースを削除する
  • ibase_errcode — エラーコードを返す
  • ibase_errmsg — エラーメッセージを返す
  • ibase_execute — 準備されたクエリを実行する
  • ibase_fetch_assoc — クエリの結果から、行を連想配列として取得する
  • ibase_fetch_object — InterBase データベースからオブジェクトを得る
  • ibase_fetch_row — InterBase データベースから 1 行分の結果を取得する
  • ibase_field_info — フィールドに関する情報を得る
  • ibase_free_event_handler — 登録済みのイベントハンドラをキャンセルする
  • ibase_free_query — プリペアドクエリにより確保されたメモリを解放する
  • ibase_free_result — 結果セットを解放する
  • ibase_gen_id — 指定した名前のジェネレータをひとつ加算し、その新しい値を返す
  • ibase_maintain_db — データベースサーバーでメンテナンスコマンドを実行する
  • ibase_modify_user — セキュリティデータベースのユーザーを変更する
  • ibase_name_result — 結果セットに名前を割り当てる
  • ibase_num_fields — 結果セットにおけるフィールド数を得る
  • ibase_num_params — プリペアドクエリのパラメータ数を返す
  • ibase_param_info — プリペアドクエリのパラメータに関する情報を返す
  • ibase_pconnect — InterBase データベースへの持続的接続をオープンする
  • ibase_prepare — Prepare a query for later binding of parameter placeholders and execution
  • ibase_query — InterBase データベースでクエリを実行する
  • ibase_restore — サービスマネージャのリストアタスクを起動し、すぐに結果を返す
  • ibase_rollback_ret — トランザクションを閉じずにロールバックする
  • ibase_rollback — トランザクションをロールバックする
  • ibase_server_info — データベースサーバーについての情報を要求する
  • ibase_service_attach — サービスマネージャに接続する
  • ibase_service_detach — サービスマネージャとの接続を切断する
  • ibase_set_event_handler — イベントが発生した際にコールされるコールバック関数を登録する
  • ibase_trans — トランザクションを開始する
  • ibase_wait_event — データベースでイベントが発生するのを待つ
add a note add a note

User Contributed Notes 7 notes

up
1
lars at dybdahl dot net
15 years ago
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();
up
0
felixlee at singnet dot com dot sg
14 years ago
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);
?>
up
0
interbase at almico dot com
15 years ago
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>
up
0
johan at essay dot org
17 years ago
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 !
up
-1
sysop at smartnettechnologies dot com
9 years ago
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;"
up
-1
fortega at uamericas dot net
10 years ago
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'); ?>
up
-1
theynich_s at yahoo dot com
15 years ago
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>";
                ?>
                &nbsp;&nbsp;
                <?if ($page == $numOfPage)
                    echo "<span>Next</span>";
                  else
                      echo "<a href=".$filename."?page=".$incr.">Next</a>";?>
</td>
</tr>
</table>
To Top