注意:
Informix 用環境変数 INFORMIXDIR および INFORMIXSERVER が PHP ifx
ドライバで利用可能であり、INFORMIX のバイナリがあるディレクトリに
パスが通っていることを確認してください。テストを始める前に
phpinfo() と書いたスクリプトを実行し、
これを確認してください。
phpinfo() があるスクリプトは、これらの環境変数の
一覧を出力します。これは、CGI 版の PHP および Apache mod_php で
共に行われます。これらの環境変数は Apache のスタートアップスクリプトで
設定する必要があります。
また、Informix 共有ライブラリがローダーで利用可能である必要があります
(LD_LINBRARY_PATH または ld.so.conf/ldconfig を確認してください)。
注意:
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) : TEXT カラムを VARCHAR カラムとして返します。
このため、select クエリにおいて blob id を使用する必要はありません。
ifx_byteasvarchar(1) : BYTE カラムを VARCHAR カラムとして返します。
このため、select クエリにおいて blob id を使用する必要はありません。
設定変数 : 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 に設定します。