Ingres II
Взаимодействие с базами данных
🕛 01.11.2006, 13:59
Для использования этих функций необходимо скомпилировать РНР с поддержкой Ingres, используя параметр -with-ingres. Для этого необходима библиотека Open API и заголовочные файлы, включенные в Ingres II. Если переменная окружения II_SYSTEM не установлена корректно, можно использовать параметр - with-ingres=DIR, указывая 1 каталог размещения Ingres.
Если при использовании РНР-расширения web-сервер Apache ие запускается и сообщает: «PHP Fatal error: Unable to start ingresjii module in Unknown on line 0», удостоверьтесь, что переменная окружения II_SYSTEM установлена корректно. Должно помочь добавление «export II_SYSTEM="/horae/ingres/II» в сценарий, запускающий Apache перед строкой запуска httpd.
Ingres не допускает конкурентные запросы/транзакции для одного подключения. Поэтому результат запроса должен обрабатываться до выполнения следующего запроса, а транзакция совершаться (или отменяться) до начала следующей транзакции.
ingres_connect
Подключение к серверу Ingres II
resource ingres_connect ([string database [, string username [. string password]]])
Возвращает дескриптор подключения Ingres II или FALSE - при ошибке.
Аргумент database имеет синтаксис: [node_id: :]dbname[/svr_class]. Для неуказанных параметров используются значения из файла конфигурации php.ini ingres.default_database, Ingres.default_user и Ingres. default_password.
Поскольку все ingres-функции используют дескриптор последнего открытого подключения по умолчанию, его не требуется сохранять, если имеется всего одно подключение. Подключение закрывается при завершении сценария или явном вызове ingres_close().
<?php
$link = ingres_connect
("mydb". "user", "pass")
or die ("Could not connect");
print ("Connected successfully"):
ingres_close (Slink).
// или просто ingres_close(); ?>
См. также: ingres_pconnect() и ingres_close().
ingres_pconnect
Создание устойчивого подключения к ВД сервера Ingres II
resource ingres_pconnect ([string database [, string username [, j string password]]])
Возвращает дескриптор подключения или FALSE - при ошибке.
ingres_pconnect() действует подобно ingres_connect() с двумя отличиями.
Перед подключением функция пытается проверить, имеется ли уже открытое (устойчивое) подключение с параметрами (имя БД, пользователя и пароль), аналогичными указанным. Если такое подключение обнаруживается, то возвращается его идентификатор вместо создания нового подключения.
При завершении сценария подключение не закрывается, а остается действительным для дальнейшего использования. (Функция ingres_ close() не может закрыть подключения, созданные с помощью ingres_ pconnect().)
См. также: ingres_connect() и ingres_close().
Ingres_close
Закрытие подключения
bool ingres_dose ([resource link])
Возвращает TRUE или FALSE - при ошибке.
Идентификатор закрываемого подключения указывается в аргументе; если его не указывать, то закрывается последнее открытое данным сценарием подключение.
Фактически использование данной функции не является обязательным, так как РНР автоматически закрывает все незакрытые неустойчивые подключения при завершении сценария. Заметьте: устойчивые подключения не закрываются.
См. также: ingres_connect() и ingres_pconnect().
ingres_query
Выполнение запроса к БД
bool ingres_query (string query [, resource link])
Возвращает TRUE или FALSE - при ошибке.
Запрос становится частью текущей транзакции (при необходимости открывается новая). Для завершения транзакции вызывается ingres_ commit(), а с помощью ingres_roTlback() можно отменить транзакцию. Функцией ingres_autocommit() можно установить режим немедленного выполнения запроса. Некоторые запросы SQL не могут выполняться данной функцией: «GET DBEVENT», «PREPARE TO COMMIT», / «SAVEPOINT» и все запросы, использующие курсор.
<?php
Ingres connect
(Sdatabase. $user. $password),
ingres_query ("select * from table"),
while ($row = ingres_fetch_row()) {
echo $row[l];
echo $row[2], } ?>
См. также: ingres_fetch_array(), ingres_fetch_object(), ingres_fetch_row(), ingres_commit(), ingres_roTlback() и ingres_autocommit().
ingres_rollback
Отмена транзакции
bool ingres_roTlback ([resource link])
Закрывает текущую транзакцию, отменяя все изменения, внесенные запросами от начала транзакции. Новая транзакция открывается при последующем вызове ingres_query().
См. также: ingres_query(), ingres_commit() и ingres_autocommit().
ingres_commit
Завершение транзакции
boo! ingres_commit ([resource link])
Закрывает текущую транзакцию, фиксируя все изменения, внесенные запросами от начала транзакции. Новая транзакция открывается при последующем вызове ingres_query(). Функцией ingres_autocommit() можно установить режим немедленного выполнения каждого запроса.
См. также: ingres_query(), ingres_rollback() и ingres_autocomnnt().
ingres_autocommit
Переключение режима немедленного выполнения запроса
bool ingres_autocomm1t ([resource link])
При запуске сценария по умолчанию запрос(-ы) (выполненный функцией ingres_query()) необходимо завершать явно, вызовом функции ingres_commit() (или отменять транзакцию с помощью ingres_ rollbackO).
Если же (вызовом данной функции) переключить режим автовыполнения, то запросы будут выполняться немедленно, то есть после каждого запроса косвенно вызывается ingres_commit().
Повторный вызов функции переключает режим на противоположный.
См. также: ingres_query(), ingres_rollback() и ingres_commit().
ingres_num_rows
Получение числа измененных или возвращенных запросом записей
int ingres_num_rows ([resource link])
После запросов DELETE, INSERT, UPDATE функция возвращает число измененных записей, а после запросов выборки - число возвращенных записей (функция должна вызываться до разборки результата запроса функциями ingres_fetch_array(), ingres_fetch_object() или ingres_fetch_row()).
В цикле обработки результатов запроса для проверки того, все ли записи были обработаны, целесообразнее использовать возвращаемое fetch-функциями значение.
См. также: ingres_query(), ingres_fetch_array(), ingres_fetch_object() и ingres_fetch_row().
ingres_num_fields
Получение числа возвращенных запросом полей
int ingres_num_fields ([resource link])
См. также: ingres_query(), ingres_fetch_array(), ingres_fetch_object() n ingres_fetch_row().
ingres_fetch_row
Занесение записи в нумерованный массив
array ingres_fetch_row ([resource link])
Возвращает в массиве (нумерация полей начинается с 1) следующую запись, возвращенную запросом, или FALSE, если все записи уже были обработаны.
<?php
ingres_connect
(Sdatabase. Suser, Spassword):
ingres_query ("select * from table");
while (Srow = lngres_fetch_row()) {
echo $row[l]: // первое поле записи
echo $row[2]: } ?>
См. также: ingres_num_fields(), ingres_query(), ingres_fetch_array() и ingres_fetch_object().
ingres_fetch_array
Занесение записи в массив
array ingres_fetch_array ([int result_type [, resource link]])
Возвращает в массиве следующую запись, возвращенную запросом, или FALSE, если записей больше не имеется.
Данная функция является расширением функции ingres_fetch_row(), и она может возвращать нумерованный или ассоциативный массив (а также объединенный). Вид возвращаемого массива может указываться в аргументе result_type одной из констант: II_NUM, II_ASSOC, П_ВОТН (по умолчанию). В ассоциативных массивах индексами служат имена полей.
Если имеются одноименные поля, используется последнее имя. Для доступа к одноименным полям можно использовать числовые индексы (поля нумеруются в той последовательности, в которой указаны в запросе или в таблице) или псевдонимы.
ingres_query(select tl.fl as f t2.il as b from tl. t2):
Sresult = ingres_fetch_array():
$foo = $result["f"]; $bar = $result["b"];
Заметьте, что функция выполняется лишь незначительно медленнее, чем ingres_fetch_object(), но предоставляет дополнительную функциональность.
<?php
ingres_connect (Sdatabase. Suser. Spassword):
ingres_query ("select * from table"),
while ($row = ingres_fetch_array()) {
echo $row["user_id"]:#
используем ассоциативный массив
echo $row["fullname"]:
echo $row[l]; #
используем нумерованный массив
echo $row[2]: } ?>
См. также: ingres_query(), ingres_num_fields(), ingres_field_name(), ingres_fetch_object() и ingres_fetch_cow().
ingres_fetch_object
Получение записи в свойствах объекта
object ingres_fetch_object ([int result_type [, resource link]])
Возвращает объект, в свойствах которого находятся поля текущей записи, или FALSE, если записей более не имеется. Заметьте: осуществлять доступ к полям по их номерам невозможно (объект не может иметь численные свойства).
По скорости выполнения функция идентична ingres_fetch_array() и почти идентична ingres_fetch_row().
<?php
ingres_connect ($database. $user.
$password):
ingres_query ("select * from table");
while ($row = ingres_fetch_object())
{ echo $row->user_id;
echo $row->fullname; } ?>
См. также: ingres_query(), ingres_num_fields(), ingres_field_name(), ingres_fetch_array() и ingres_fetch_row().
ingres_field_name
Получение имени поля записи в результате запроса
string ingres_field_name (int index [, resource link])
Функция возвращает имя поля с индексом index (нумерация начинается с 1) набора записей, возвращенных запросом, или FALSE - при ошибке.
См. также: ingres_query(), ingres_num_fields(), ingres_fetch_array(), ingres_fetch_object() и ingres_fetch_row().
ingres_field_type
Получение типа поля
string ingres_field_type (int index [, resource link])
Функция возвращает имя поля с индексом index (нумерация начинается с 1) набора записей, возвращенных запросом, или FALSE - при ошибке.
Возвращаемые типы полей: IIAPI_BYTE_TYPE, IIAPI_CHA_TYPE, IIAPI_DTE_ TYPE, IIAPIJLTJYPE IIAPIJNTJYPE, IIAPI_VCH_TYPE. Некоторые типы могут соответствовать нескольким SQL-типам в зависимости от длины поля (см. ingres_field_length()). Например, IIAPI_FLT_TYPE может соответствовать float4 или floatS. См. документацию: «Ingres/OpenAPI User Guide - Appendix С».
См. также: ingres_query(), ingres_num_fields(), ingres_fetch_array(), ingres_fetch_object() и ingres_fetch_row().
ngres_field_nullable
Выяснение, может ли поле принимать значение null
bool ingres_field_nullable (int index [, resource link])
Возвращает TRUE, если поле с индексом index (нумерация начинается с 1) может иметь значение NULL, иначе возвращает FALSE.
См. также: ingres_query(), ingresjium_fields(), ingres_fetch_array(), ingres_fetch_object() и ingres_fetcn_row().
Ingres_field_prength
Получение длины поля
int ingres_field_length (int index [, resource link])
Возвращает длину поля (максимальное число байт) с индексом index (нумерация начинается с 1) набора записей, возвращенных запросом, или FALSE - при ошибке.
См. документацию «Ingres/OpenAPI User Guide - Appendix С».
См. также: ingres_query(), ingres_num_fields(), ingres_fetch_array(), ingres_fetch_object() и ingres_fetch_row().
ingres_field_precision
Получение точности поля
int ingres_field precision (int index [, resource link])
Возвращает точность поля (только для полей, содержащих числовые значения) с индексом index (нумерация начинается с 1) набора записей, возвращенных запросом.
См. документацию «Ingres/OpcnAPI User Guide - Appendix С».
См. также: ingres_query(), ingres_num_fie1ds(), ingres_fetch_array(), ingres_fetch_object() и ingres_fetch_row().
ingres_field_scale
Получение размерности поля
int ingres_field_scale (int index [, resource link]) Возвращает масштаб целочисленного ноля с индексом index. См. документацию «Ingrcs/OpenAPI User Guide - Appendix С».
См. также: ingres_query(), ingres_num_fields(), ingres_fetch_array(), ingres_fetch_object() и ingres_fetch_ieow().