XXV. Informix 関数

オンライン用の Informix ドライバ (ODS) 7.x, SE 7.x および Universal Server (IUS) 9.x は、"functions/ifx.ec" および "functions/php3_ifx.h" に実装されています。ODS 7.x サポートはほぼ完成してお BLOB および TEXT カラムは完全にサポートされています。 IUS 9.x サポートは、部分的に完成しています。 新規のデータ型のサポートは完了していますが、SLOBおよびCLOBサポートに 関しては、まだ作業中です。

設定に関する注意:

"configure" スクリプトを実行する前に、必ず "INFORMIXDIR" 変数を設定しておいてください。

"configure --with_informix=yes" を実行した場合、 configure スクリプトは、ライブラリおよびインクルードディレクトリを 自動検出します。 環境変数 "IFX_LIBDIR", "IFX_LIBS", "IFX_INCDIR" を指定することにより、 この検出結果を上書きすることが可能です。 configure スクリプトは、Informix サーバーのバージョンを検出しようと もします。 Informix のバージョンが 9.00 以上である場合、条件コンパイル用変数 "HAVE_IFX_IUS" が設定されます。

BLOB (TEXT および BYTE カラム)の使用に関する注意:

通常、BLOB は整数の BLOB ID により指定されます。 select クエリーは、BYTE および TEXT カラム毎に "blob id" を返します。 ( "ifx_blobinfile(0);" により) メモリー上で BLOB を得ることを選択した場合、 "string_var = ifx_get_blob($blob_id);" で内容を得ることができます。 ファイルから BLOB カラムの内容を取得したい場合、 "ifx_blobinfile(1);" を使用して下さい。 "ifx_get_blob($blob_id);" によりファイル名を得ることができます。 BLOB の内容を得る際には、通常のファイル入出力を行ってください。

insert/update クエリーに関しては、 "ifx_create_blob(..);" により自分で "blob id" を作成する必要があります。 その後、blob id を配列に代入し、 クエリー文字列の中の blob カラムを疑問符 (?) で置換します。 updates/inserts の場合、ifx_update_blob(...) で blob の内容を設定する のが便利でしょう。

BLOB カラムの動作は、設定用変数で変更することができます。 これらの変数は、実行時にも設定可能です。

設定変数 : ifx.textasvarchar

設定変数 : ifx.byteasvarchar

実行時関数 :

ifx_textasvarchar(0) : TEXT カラムを有する select クエリーに blob id を使用する

ifx_byteasvarchar(0) : BYTE カラムを有する select クエリーに blob id を使用する

ifx_textasvarchar(1) : select クエリーには blob id の使用をせずに VARCHAR カラムである場合と同様に TEXT カラムを返す

ifx_byteasvarchar(1) : select クエリーには blob id の使用をせずに VARCHAR カラムである場合と同様に BYTE カラムを返す

設定変数 : ifx.blobinfile

実行時関数 :

ifx_blobinfile_mode(0) : メモリーに BYTE カラムを返す, blob id によりその内容を取り出す

ifx_blobinfile_mode(1) : メモリーに BYTE カラムを返す, blob id によりそのファイル名を取り出す

ifx_text/byteasvarchar を 1 に設定した場合、 通常の(しかしやや長い) VARCHAR フィールドのように select クエリーで TEXT や BYTE カラムを使用することが可能です。 全ての文字列は、PHP で "数えられる" ので、これにより、"バイナリ・セーフ" が維持されます。 これを正しく処理するのはあなた次第です。 返されるデータには何でも含むことができますが、その内容について 責任を負うことになります。

ifx_blobinfile を 1 に設定した場合、blob の内容を得るために ifx_get_blob(..) により返されたファイル名を使用して下さい。 この場合、行を取得する際に Informix により作成されたテンポラリファイル を削除する責任があります。 取得された新規の行は、BYTE カラム毎に新規のテンポラリファイルを 作成します。

テンポラリファイルの位置は、環境変数 "blobdir" により 設定することができます。 デフォルトは、"." (カレントディレクトリ)です。 putenv(blobdir="tmpblob"); のようにすることにより、 誤って残ってしまったテンポラリファイルを削除することが容易に なります。(テンポラリファイルの名前は "blb" で始まります)

自動的に "char" (SQLCHAR および SQLNCHAR) データを取り去る:

これは、次の設定変数により設定することが可能です。

ifx.charasvarchar : 最後尾のスペースを自動的に取り去る場合に 1 に設定します。

NULL 値:

設定変数 ifx.nullformat (およびランタイム関数 ifx_nullformat) をTRUEに設定した場合、文字列 "NULL" として NULL カラムを返します。 FALSEに設定した場合は空文字列を返します。 これにより、NULLカラムと空のカラムを識別することが可能となります。

目次
ifx_connect ? Informix サーバーへの接続をオープンする
ifx_pconnect ? 持続的 Informix 接続をオープンする
ifx_close ? Informix 接続を閉じる
ifx_query ? Informix クエリーを送信する
ifx_prepare ? SQL 文を実行用に準備する
ifx_do ? 事前に準備された SQL 文を実行する
ifx_error ? 直近の Informix コールのエラーコードを返す
ifx_errormsg ? 直近の Informix コールのエラーメッセージを返す
ifx_affected_rows ? クエリーで作用された行の数を得る
ifx_getsqlca ? クエリ実行後、sqlca.sqlerrd[0..5] の値を得る
ifx_fetch_row ? 配列として行を得る
ifx_htmltbl_result ? クエリー結果の全行を HTML テーブルにフォーマットする
ifx_fieldtypes ? Informix SQL フィールドのリスト
ifx_fieldproperties ? SQL フィールドプロパティのリスト
ifx_num_fields ? クエリーのカラム数を返します
ifx_num_rows ? クエリー既に取得された行の数を数える
ifx_free_result ? クエリーに関するリソースを解放する
ifx_create_char ? 文字オブジェクトを作成する
ifx_free_char ? 文字オブジェクトを削除する
ifx_update_char ? 文字オブジェクトの内容を更新する
ifx_get_char ? 文字オブジェクトの内容を返す
ifx_create_blob ? BLOB オブジェクトを作成する
ifx_copy_blob ? 指定した BLOB オブジェクトを2重化する
ifx_free_blob ? BLOB オブジェクトを削除する
ifx_get_blob ? BLOB オブジェクトの内容を返す
ifx_update_blob ? BLOB オブジェクトの内容を更新する
ifx_blobinfile_mode ? 全ての select クエリーに関するデフォルトの BLOB モードを設定する
ifx_textasvarchar ? デフォルトのテキストモードを設定する
ifx_byteasvarchar ? デフォルトのバイトモードを設定する
ifx_nullformat ? S取得する行のデフォルトの返り値を設定する
ifxus_create_slob ? SLOB オブジェクトを作成し、オープンする
ifx_free_slob ? SLOB オブジェクトを削除する
ifxus_close_slob ? SLOB オブジェクトを削除する
ifxus_open_slob ? SLOB オブジェクトをオープンする
ifxus_tell_slob ? カレントのファイルまたはシーク位置を返す
ifxus_seek_slob ? 現在のファイル位置またはシーク位置を返す
ifxus_read_slob ? SLOB オブジェクトから n バイト読みこむ
ifxus_write_slob ? SLOB オブジェクトに文字列を書きこむ