Поведение этих функций зависит от установок в php.ini.
Замечание:
Убедитесь, что драйверу ifx доступны переменные окружения INFORMIXDIR и INFORMIXSERVER и что директория INFORMIX/bin включена в PATH. Проверить можно запустив скрипт, содержащий команду phpinfo(). В выводе phpinfo() перечислены все установленые переменные окружения. Это работает и для CGI и для Apache mod_php. Необходимо задать эти переменные в скрипте запуска Apache.
Разделяемые библиотеки Informix также должны доступны загрузчику (проверьте LD_LIBRARY_PATH или ld.so.conf/ldconfig).
Замечание: Несколько замечаний по использованию BLOB (столбцы TEXT и BYTE)
BLOB адресуются по своему идентификатору. Запросы типа SELECT возвращают "blob id" для столбцов BYTE и TEXT. Контент данных полей можно получить с помощью "string_var = ifx_get_blob($blob_id);" если хотите сохранить его в памяти ("ifx_blobinfile(0);"). Если предпочитаете сохранить в файл, используйте "ifx_blobinfile(1);" и "ifx_get_blob($blob_id);", который вернет имя файла. Для получения контента BLOB используйте обычные функции работы с файлами.
Для запросов INSERT/UPDATE вам необходимо создать эти "blob id's" самостоятельно с помощью "ifx_create_blob();". После этого поместите BLOB в массив и замените в запросе соответствующие поля на знаки вопроса (?). Для запросов INSERT/UPDATE контент полей BLOB задается функцией ifx_update_blob().
Поведение столбцов BLOB можно изменить с помощью параметров конфигурации, которые можно менять во время исполнения:
переменная конфигурации: ifx.textasvarchar
переменная конфигурации: ifx.byteasvarchar
функции времени исполнения:
ifx_textasvarchar(0): использовать идентификаторы BLOB для запросов SELECT с типом TEXT
ifx_byteasvarchar(0): использовать идентификаторы BLOB для запросов SELECT с типом BYTE
ifx_textasvarchar(1): возвращать столбцы TEXT как будто они типа VARCHAR. В данном случае необходимость в использовании идентификатора BLOB отпадает.
ifx_byteasvarchar(1): возвращать столбцы BYTE как будто они типа VARCHAR. В данном случае необходимость в использовании идентификатора BLOB отпадает.
переменная конфигурации: ifx.blobinfile
функции времени исполнения:
ifx_blobinfile_mode(0): сохранение столбцов BYTE в памяти, идентификатор BLOB позволит получить их контент.
ifx_blobinfile_mode(1): сохранение столбцов BYTE в файл, идентификатор BLOB позволит получить имя файла.
Если вы установите ifx_text/byteasvarchar равным 1, вы сможете использовать TEXT и BYTE в запросах SELECT как обычные (но очень длинные) поля VARCHAR. Подобное использование бинарно безопасно, так что можете смело пользоваться. Если возвращаемые данные содержат что-то странное, то вы сами несете полную ответственность за результаты.
Если вы установили set ifx_blobinfile равным 1, используйте имя файла, возвращенное ifx_get_blob(..) для получения контента. Не забывайте УДАЛЯТЬ ВРЕМЕННЫЕ ФАЙЛЫ, СОЗДАННЫЕ INFORMIX для выгрузки BLOB. Каждая извлеченная строка создаст новый временный файл для каждого поля BYTE.
Местоположение временных файлов определяется переменной окружения "blobdir" и по умолчанию равно "." (текущая директория). Что-то типа: putenv(blobdir=tmpblob"); сильно облегчит последующую очистку временной директории. Имена временных файлов начинаются с "blb".
Замечание: Автоматическое обрезание данных "char" (SQLCHAR и SQLNCHAR)
Такое поведение можно задать переменной конфигурации
ifx.charasvarchar: если установлено в 1, конечные пробельные символы будут автоматически обрезаны.
Замечание: Значения
NULL
Переменная конфигурации ifx.nullformat (и функция времени выполнения ifx_nullformat()), установленная в
TRUE
возвратит поляNULL
как строку "NULL
", если установлена вFALSE
- вернет пустую строку. Эта настройка позволит различать пустые строки иNULL
.
Имя | По умолчанию | Место изменения | Список изменений |
---|---|---|---|
ifx.allow_persistent | "1" | PHP_INI_SYSTEM | Удалено в PHP 5.2.1. |
ifx.max_persistent | "-1" | PHP_INI_SYSTEM | Удалено в PHP 5.2.1. |
ifx.max_links | "-1" | PHP_INI_SYSTEM | Удалено в PHP 5.2.1. |
ifx.default_host | NULL | PHP_INI_SYSTEM | Удалено в PHP 5.2.1. |
ifx.default_user | NULL | PHP_INI_SYSTEM | Удалено в PHP 5.2.1. |
ifx.default_password | NULL | PHP_INI_SYSTEM | Удалено в PHP 5.2.1. |
ifx.blobinfile | "1" | PHP_INI_ALL | Удалено в PHP 5.2.1. |
ifx.textasvarchar | "0" | PHP_INI_ALL | Удалено в PHP 5.2.1. |
ifx.byteasvarchar | "0" | PHP_INI_ALL | Удалено в PHP 5.2.1. |
ifx.charasvarchar | "0" | PHP_INI_ALL | Удалено в PHP 5.2.1. |
ifx.nullformat | "0" | PHP_INI_ALL | Удалено в PHP 5.2.1. |
Краткое разъяснение конфигурационных директив.
ifx.allow_persistent
boolean
Разрешать или нет постоянные соединения Informix.
ifx.max_persistent
integer
Максимальное количество постоянных соединений на процесс.
ifx.max_links
integer
Максимальное количество соединений на процесс, включая постоянные.
ifx.default_host
string
Хост для соединения по умолчанию, если не задан в ifx_connect() или ifx_pconnect(). Не применяется в безопасный режим.
ifx.default_user
string
Пользователь по умолчанию, если не задан в ifx_connect() ifx_pconnect(). Не применяется в безопасный режим.
ifx.default_password
string
Пароль по умолчанию, если не задан в в ifx_connect() или ifx_pconnect(). Не применяется в безопасный режим.
ifx.blobinfile
boolean
Если хотите помещать поля BLOB в файл, установите в TRUE
.
Если в память, то установите в FALSE
.
Можно переопределить во время исполнения с функцией
ifx_blobinfile_mode().
ifx.textasvarchar
boolean
Если хотите возвращать TEXT как обычную строку, установите в TRUE
.
Если хотите получать идентификатор BLOB, установите в FALSE
.
Можно переопределить во время исполнения с функцией
ifx_textasvarchar().
ifx.byteasvarchar
boolean
Если хотите возвращать BYTE как обычную строку, установите в TRUE
.
Если хотите получать идентификатор BLOB, установите в FALSE
.
Можно переопределить во время исполнения с функцией
ifx_textasvarchar().
ifx.charasvarchar
boolean
Установите как TRUE
, если хотите обрезать конечные пробельные символы у CHAR.
ifx.nullformat
boolean
Если хотите получать NULL
как строку "NULL
" - установите в TRUE
.
Если хотите получать NULL
как пустую строку - установите в FALSE
.
Можно переопределить во время исполнения с функцией
ifx_nullformat().