PHP マニュアル
前のページ |  | 次のページ

# XLII. Firebird/InterBase 関数

# 導入

Firebird/InterBase は ANSI SQL-92 の多くの機能をサポートする リレーショナルデータベースで、Linux・Windows その他多くの Unix プラットフォーム上で動作します。Firebird/InterBase は 優れた同時実行性・パフォーマンス、そしてストアドプロシージャや トリガでの強力な言語サポートを提供します。1981 年以降、このデータベースは さまざまな名前の製品として使用されています。

InterBase はこの RDBMS のクローズドソース版の名前で、Borland/Inprise によって開発されました。InterBase についての詳細な情報は http://www.borland.com/interbase/ にあります。

Firebird は C・C++プログラムやテクニカルアドバイザやサポーターたちによる 商業的に独立したプロジェクトです。Inprise Corp（現在は Borland Software Corp という名で知られています）が 2000 年 7 月 25 日に InterBase Public License v.1.0 の下で公開したソースコードをもとにして、 マルチプラットフォームなリレーショナルデータベースの開発と機能拡張を 行っています。Firebird についての詳細な情報は http://www.firebirdsql.org/ にあります。

> 注意: この拡張モジュールは、InterBase のバージョン 5 以降とすべてのバージョンの Firebird をサポートします。InterBase バージョン 5.x のサポートは、PHP 5 で削除されました。

> このデータベースは、シングルクオート(')文字をエスケープに使用します。 この動作は Sybase データベースに似ており、以下のディレクティブを `php.ini` に追加してください。

> `magic_quotes_sybase = On`

# 要件

# インストール手順

PHP で InterBase サポートを有効にするには、 `--with-interbase[=DIR]` を指定して 設定を行います。ただし、DIR は InterBase のベースインストールディレクトリで、 デフォルトは `/usr/interbase` です。

> Win32 ユーザへの注意: このモジュールをWindows環境で有効にするには、 gds32.dllをPHP/Win32バイナリパッケージのDLLフォ ルダから使用するWindowsマシンのSYSTEM32フォルダ(例: `C:\WINNT\SYSTEM32` または `C:\WINDOWS\SYSTEM32`) にコピーする必要があります。 InterBase データベースサーバを PHP を実行しているのと同じマシンに インストールしている場合、この DLL はすでにあるはずです。この場合、 DLL フォルダから gds32.dll をコピーする必要は ありません。

# 実行時設定

`php.ini` の設定により動作が変化します。

表 1. InterBase設定オプション

名前 | デフォルト | 変更の可否 | 変更履歴
--- | --- | --- | ---
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 | 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 | 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 |

PHP_INI_* 定数の詳細および定義については 付録G を参照してください。

以下に設定ディレクティブに関する 簡単な説明を示します。

`ibase.allow_persistent` boolean

  Firebird/InterBase 持続的な接続 を許可するかどうか。

`ibase.max_persistent` integer

  プロセスごとの、Firebird/InterBase の持続的接続の最大数。 この数を超えた場合、ibase_pconnect() による新しい接続は 持続的ではない接続になります。

`ibase.max_links` integer

  プロセスごとの Firebird/InterBase の接続の最大数。持続的な接続の数も 含みます。

`ibase.default_db` string

  データベース名を指定せずに ibase_[p]connect() がコールされた場合に 接続するデフォルトのデータベース。この値が設定されており、かつ SQL セーフモードが有効な場合、このデータベース以外への接続は一切許可されません。

`ibase.default_user` string

  ユーザ名を指定せずにデータベースに接続した際に使用されるユーザ名。

`ibase.default_password` string

  パスワードを指定せずにデータベースに接続した際に使用されるパスワード。

`ibase.default_charset` string

  文字セットを指定せずにデータベースに接続した際に使用される文字セット。

`ibase.timestampformat` string

`ibase.dateformat` string

`ibase.timeformat` string

  これらのディレクティブは日付や時間のフォーマットを指定します。 結果セットの中の日付や時間のデータ、そしてパラメータとしてバインドする 日付や時間のデータに適用されます。

# リソース型

# 定義済み定数

以下の定数が定義されています。 この関数の拡張モジュールが PHP 組み込みでコンパイルされているか、 実行時に動的にロードされている場合のみ使用可能です。

トランザクションの挙動を設定するため、以下の定数を ibase_trans() に渡すことが可能です。

表 2. Firebird/InterBase トランザクションフラグ

定数 | 説明
--- | ---
IBASE_DEFAULT | デフォルトのトランザクション設定が使用されます。デフォルト設定は クライアントライブラリによって決定され、たいていの場合は IBASE_WRITE|IBASE_CONCURRENCY|IBASE_WAIT です。
IBASE_READ | 読み込み専用のトランザクションを開始します。
IBASE_WRITE | 読み書き可能なトランザクションを開始します。
IBASE_CONSISTENCY | 分離レベルを 'consistency' にしてトランザクションを開始します。 他のトランザクションによって変更中のテーブルを読み込むことは できません。
IBASE_CONCURRENCY | 分離レベルを 'concurrency' (あるいは 'snapshot') にして トランザクションを開始します。すべてのテーブルへのアクセスが 可能ですが、トランザクションの開始以降に別のトランザクションに よってコミットされた内容を見ることはできません。
IBASE_COMMITTED | 分離レベルを 'read committed' にしてトランザクションを開始します。 このフラグは `IBASE_REC_VERSION` あるいは `IBASE_REC_NO_VERSION` とともに使用する必要があります。 トランザクションの開始以降にコミットされた内容についてもアクセス可能と なります。`IBASE_REC_NO_VERSION` が指定された場合、 最新バージョンのデータのみが読み込み可能となります。 `IBASE_REC_VERSION` が指定された場合、他の トランザクションで処理が完了していない変更についても読み込むことが できます。
IBASE_WAIT | 衝突が発生した場合に、トランザクションが処理を再試行することを示します。
IBASE_NOWAIT | 衝突が発生した場合に、トランザクションがその場で処理を中断して 処理が失敗することを示します。

データの取得方法を指定するために、以下の定数を ibase_fetch_row()、 ibase_fetch_assoc() あるいは ibase_fetch_object() に渡すことが可能です。

表 3. Firebird/InterBase フェッチフラグ

定数 | 説明
--- | ---
IBASE_FETCH_BLOBS | 過去との互換性を保持するため、`IBASE_TEXT` としても使用可能です。BLOB データを読み込む際に、BLOB ID ではなく 直接データそのものを読み込みます。
IBASE_FETCH_ARRAYS | 配列をインラインで読み込みます。指定しなかった場合は、配列の ID を返します。配列 ID は INSERT 操作への引数としてのみ使用可能で、 配列 ID を処理できる関数は現在存在しません。
IBASE_UNIXTIME | 日付や時刻のフィールド値を、文字列ではなく UNIX タイムスタンプ (1-Jan-1970 0:00 UTC からの経過秒数)で返します。 1970 年より前の日付に対してこれを使用すると、環境によっては 問題を引き起こす可能性があります。

要求内容やオプションを指定するために、以下の定数を サービス API 関数(ibase_server_info(), ibase_db_info(), ibase_backup(), ibase_restore() および ibase_maintain_db())に渡すことが可能です。 これらのオプションの意味については Firebird/InterBase のマニュアルを 参照ください。

`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`

  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`

  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`

  ibase_maintain_db() へのオプション

`IBASE_STS_DATA_PAGES`

`IBASE_STS_DB_LOG`

`IBASE_STS_HDR_PAGES`

`IBASE_STS_IDX_PAGES`

`IBASE_STS_SYS_RELATIONS`

  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`

  ibase_server_info() へのオプション

前のページ | ホーム | 次のページ
filter_var | 上に戻る | ibase_add_user