Runtime Configuration
The behaviour of these functions is affected by settings in
php.ini.
Note: Make sure that the Informix environment variables
INFORMIXDIR and INFORMIXSERVER are available to the PHP
ifx driver, and that the INFORMIX bin directory is in the
PATH. Check this by running a script that contains a call
to phpinfo() before you start testing. The phpinfo() output
should list these environment variables. This is TRUE for
both CGI php and Apache mod_php. You may have to set these
environment variables in your Apache startup script.
The Informix shared libraries should also be available
to the loader (check LD_LIBRARY_PATH or ld.so.conf/ldconfig).
Some notes on the use of BLOBs (TEXT and BYTE columns):
BLOBs are normally addressed by BLOB identifiers. Select
queries return a "blob id" for every BYTE and
TEXT column. You can get at the contents with "string_var
= ifx_get_blob($blob_id);" if you choose to get the
BLOBs in memory (with: "ifx_blobinfile(0);").
If you prefer to receive the content of BLOB columns in
a file, use "ifx_blobinfile(1);", and "ifx_get_blob($blob_id);"
will get you the filename. Use normal file I/O to get at
the blob contents.
For insert/update queries you must create these "blob
id's" yourself with "ifx_create_blob();".
You then plug the blob id's into an array, and replace the
blob columns with a question mark (?) in the query string.
For updates/inserts, you are responsible for setting the
blob contents with ifx_update_blob().
The behaviour of BLOB columns can be altered by configuration
variables that also can be set at runtime:
configuration variable: ifx.textasvarchar
configuration variable: ifx.byteasvarchar
runtime functions:
ifx_textasvarchar(0): use blob id's for select queries
with TEXT columns
ifx_byteasvarchar(0): use blob id's for select queries
with BYTE columns
ifx_textasvarchar(1): return TEXT columns as if they were
VARCHAR columns, so that you don't need to use blob id's
for select queries.
ifx_byteasvarchar(1): return BYTE columns as if they were
VARCHAR columns, so that you don't need to use blob id's
for select queries.
configuration variable: ifx.blobinfile
runtime function:
ifx_blobinfile_mode(0): return BYTE columns in memory,
the blob id lets you get at the contents.
ifx_blobinfile_mode(1): return BYTE columns in a file,
the blob id lets you get at the file name.
If you set ifx_text/byteasvarchar to 1, you can use TEXT
and BYTE columns in select queries just like normal (but
rather long) VARCHAR fields. Since all strings are "counted"
in PHP, this remains "binary safe". It is up to
you to handle this correctly. The returned data can contain
anything, you are responsible for the contents.
If you set ifx_blobinfile to 1, use the file name returned
by ifx_get_blob(..) to get at the blob contents. Note that
in this case YOU ARE RESPONSIBLE FOR DELETING THE TEMPORARY
FILES CREATED BY INFORMIX when fetching the row. Every new
row fetched will create new temporary files for every BYTE
column.
The location of the temporary files can be influenced by
the environment variable "blobdir", default is
"." (the current directory). Something like: putenv(blobdir=tmpblob");
will ease the cleaning up of temp files accidentally left
behind (their names all start with "blb").
Automatically trimming "char" (SQLCHAR and SQLNCHAR)
data: This can be set with the configuration variable
ifx.charasvarchar: if set to 1 trailing spaces will be
automatically trimmed, to save you some "chopping".
NULL values: The configuration variable ifx.nullformat
(and the runtime function ifx_nullformat()) when set to
TRUE will return NULL columns as the string "NULL",
when set to FALSE they return the empty string. This allows
you to discriminate between NULL columns and empty columns.