программирование, создание программ, учебник Delphi, учебник по программированию, бейсек, делфи, си, паскаль
 
 
 

 

Microsoft SQL Server

Ранее для доступа к Microsoft SQL 6.5 и 7.0 использовались разные модули, но теперь они объединены в один.
mssql_coonnect
Подключение к серверу MS SQL
int mssql_connect ([string servername [, string user-name [, string password]]])
Возвращает дескриптор подключения к серверу MS SQL или FALSE — при ошибке. Аргумент servernane должен быть действительным именем, определенным в файле interfaces.
Если функция повторно вызывается с теми же аргументами, новое подключение не создается, а возвращается идентификатор имеющегося.
Подключение к серверу закрывается при завершении сценария или ранее, если явно вызывается функция mssql_close().
См. также: mssql_pconnect(), mssql_close().
mssql_close
Закрытие подключения к MS SQL Server
int mssql_close ([int link_identifier]) Возвращает TRUE или FALSE — при ошибке.
Идентификатор закрываемого подключения указывается в аргументе; если его не указывать, то закрывается последнее открытое данным сценарием подключение.
Фактически использование данной функции не является обязательным, так как РНР автоматически закрывает все незакрытые неустойчивые подключения при завершении сценария. Заметьте: устойчивые подключения, созданные функцией mssql_pconnect(), не закрываются.
См. также: mssql_connect(), mssql_pconnect().
mssql_pconnect
Создание устойчивого подключения к серверу MS SQL
int mssqljiconnect ([string server-name [, string username [. string password]]])
Возвращает дескриптор устойчивого подключения или FALSE — при ошибке. Mssql_pconnect() действует подобно Mssql_connect() с двумя отличиями.
Перед подключением функция пытается проверить, имеется ли уже открытое (устойчивое) подключение с параметрами (имя сервера, пользователя и пароль), аналогичными указанным. Если такое подключение обнаруживается, то возвращается его идентификатор вместо создания нового подключения.
При завершении сценария подключение не закрывается, а остается действительным для дальнейшего использования. (Функция mssql_ close() не может закрыть подключения, созданные с помощью mssql_ pconnect().)
mssql_select_db
Выбор БД MS SQL
int mssql_select_db (string databasejiame [. int linkjidentifier])
Возвращает TRUE или FALSE — при ошибке.
Устанавливает БД с именем database_name, активной для текущего подключения или указанного в link_iidentifier. Если подключений не имеется, то косвенно вызывается функция mssql_connect() с параметрами по умолчанию.
Последующие запросы, выполняемые функцией, будут адресованы данной БД.
См. также: mssql_connect(), mssql_pconnect() и mssql_query()
mssql_query
Выполнение запроса к БД
int rassql_query (string query [, int 1ink_identifier])
Посылает запрос текущей БД, активной для текущего (последнего открытого) подключения пли указанного и link_identifier. Если подключений не имеется, то косвенно вызывается функция mssql_connect() с параметрами по умолчанию.
Возвращает дескриптор набора возвращенных записей или FALSE — при ошибке.
См. также: mssql_select_db() и mssql_connect().
mssql_num_rows
Получение числа возвращенных записей
int mssql_num_rows (string result)
Возвращает число записей в наборе result, возвращенном функцией mssql_query().
См. также: mssql_query() и mssql_fetch_row().
В текущей реализации модуля отсутствует функция mssql _affected_ rows(), и для того, чтобы выяснить, сколько записей было изменено командами UPDATE, INSERT или DELETE, приходится использовать подобный следующему код:
SrsRows = mssql_query
("select @@rowcount as rows". $db):
Srows = mssql_result
($rsRows. 0. "rows"):
mssql_free_result
Уничтожение набора записей
int mssql_free_result (int result)
Функция освобождает память, занимаемую возвращенным запросом, набором записей result. Ее следует использовать только в случае, если требуется экономить память, так как память автоматически освобождается при завершении сценария.
mssql_result
Получение определенного элемента набора записей
int mssql result (Int result, int l, mixed field)
Возвращает содержимое ячейки из набора записей result. В аргументе row указывается номер записи (нумерация начинается с 0), в аргументе field можно указать индекс поля (число), имя поля, полное имя поля (вида: «имя_таблицы.имя_поля») или псевдоним поля (для запросов типа 'SELECT foo AS bar FROM...').
При работе с большими наборами записей быстрее выполняются функции типа _fetch_ (см. ниже). Также заметьте, что численные индексы обрабатываются быстрее строковых.
Не следует вызывать функцию mysqljresult() в сочетании с другими функциями обработки набора записей.
Рекомендуется использовать альтернативные функции: mssql_fetch_ row(), mssql_fetch_array() и mssql_fetch_object().
mssql_data_seek
Перемещение внутреннего указателя записи
int mssql_data_seek (int resul ^identifier, int rowjnumber)
При каждом вызове функции mssql_fetch_row() (или подобной ей) внутренний курсор записи смещается на следующую запись. Данная функция позволяет свободно перемещать курсор в наборе записей result_identifier так, чтобы он указывал на запись с номером row_ number (нумерация начинается с 0).
Она возвращает TRUE или FALSE — при ошибке.
См. также mssql_data_seek().
mssql_fetch_array
Занесение записи в массив
array mssql_fetch_array (int result)
Возвращает массив, соответствующий текущей записи из набора записей result, возвращенных запросом, или FALSE, если записей более не имеется (при этом курсор записи перемещается на следующую).
Данная функция является расширением функции mysql_fetch_row(), и она возвращает объединенный нумсрованно-ассоциативный массив. Доступ к элементам массива может осуществляться как через имена полей, так и по их номеру.
Заметьте, что функция выполняется немного медленнее, чем mysql_ fetch_row(), но предоставляет дополнительную функциональность.
См. также mssql_fetch_row().
mssql_fetch_row
Занесение записи в нумерованный массив
array mssql_fetch_row (int result)
Возвращает соответствующий текущей записи массив из набора записей result, возвращенных запросом (последующий вызов функции возвращает следующую запись), или FALSE, если записей более не имеется.
Каждое поле записи сохраняется в нумерованном элементе массива (нумерация начинается с 0).
См. также: mssql_fetch_array(), mssql_fetch_object(), mssql_data_seek(), mssql_fetch_length() и mssql_result().
mssql_fetch_object
Получение записи в свойствах объекта
int mssql_fetch_object (int result)
Возвращает объект, в свойствах которого находятся поля текущей записи, или FALSE, если записей более не имеется.
По скорости выполнения функция идентична mysql_fetch_array() и почти идентична mysql_fetch_row().
См. также: mssql_fetch_array() и mssql_fetch_row().
mssql_num_fields
Получение числа полей в наборе записей
int mssql_num_fields (int result)
См. также: mssql_query(), mssql_fetch_field() и mssql_num_rows().
mssql_fetch_field
Получение информации о поле записи в свойствах объекта
object mssql_fetch_field (int result [. int field_pffset])
Если номер поля field_offset не указан, при каждом вызове функции возвращаются свойства следующего поля из набора записей result.
Возвращаемый объект имеет следующие свойства (и содержит информацию):

  • name — имя поля. Если поле — результат выполнения функции, имя возвращается в виде computed$N, где #N — порядковый номер;
  • column_source — имя таблицы, которой принадлежит поле;
  • maxjlength — максимальная длина поля;
  • numeric — 1, если поле числовое.

См. также mssql_field_seek().
mssql_field_seek
Перемещение к указанному полю
int mssql_field_seek (int result, int field_offset)
Перемещается к указанному числом полю. И, если при следующем вызове mssql_fetch_field() не указывается номер поля, будет возвращено это поле.
См. также mssql_fetch_field().
mssql_field_name
Получение имени поля в наборе записей
int mssql_field_name (int result [, int offset])
mssql_field_length
Получение размера поля набора записей
int mssql_fieldjength (int result [, int offset])
mssql_field_type
Получение типа поля набора записей
string mssql_field_type (int result [, int offset])
mssql_get_last_message
Получение последнего сообщения сервера
string mssql_getjast_message (void)
mssql_min_error_severity
Установка минимального уровня сообщаемых ошибок
void rassql_min_error_severity (int severity)
mssql_min_message_severity
Установка минимального уровня сообщений
void mssql_min_message_severity (int severity)
InterBase
InterBase (http://www.interbase.com/) — популярная БД, производимая Borland/Inprise. Последняя версия InterBase 6 распространяется бесплатно.
Эта БД использует одинарные кавычки (') для цитирования но аналогии с БД Sybase, если в файл php.ini добавить параметр:
magic_quotes_sybase = On
ibase_connect
Подключение к серверу БД InterBase
int ibase_connect (string database [, string user-name [, string password [, string charset [, int buffers [, int dialect [. string role>]])
Аргумент database должен указывать путь к файлу БД на сервере. Если сервер не локальный, то должен присутствовать префикс: «hostname:» (TCP/IP), «//hostname/» (NetBEUI) или «hostname®» (IPX/SPX), в зависимости от используемого протокола, user-name и password также могут быть указаны параметрами конфигурации PHP ibase. default_user и ibase.default_password. charset определяет кодировку, используемую БД но умолчанию, buffers — число буферов, используемых для кэширования БД (при значении 0 или отсутствии указания сервер будет использовать собственное значение), dialect указывает используемый подключением диалект SQL (по умолчанию — самый старший, поддерживаемый клиентской частью). ibase_connect('local host:/usr/db/db.gdb'.'SYSDBA'.'masterkey'. ' IS08859J'. '100'. '1' ) ;
Если функция повторно вызывается с теми же аргументами, новое подключение не создается, а возвращается идентификатор имеющегося.
В конце сценария принято закрывать подключение функцией ibase_ close(), но этого можно не делать, поскольку РНР автоматически закрывает все (неустойчивые) подключения при завершении сценария.
<?php
$host="locdlhost:c:
\\IB6\\data\\db.gdb": // WinNT путь
$dbh = ibase_connect
($host. Susername, Spassword).
Sstmt = 'SELECT * FROM tblname';
$sth = ibasejjuery (Jdbh, $stmt);
while ($row = ibase_fetch_object
($sth)) { print $row->email - "\n". }
ibase_close ($dbh); ?>
См. также ibase_pconnect().
ibase_close
Отключение от сервера БД InterBase
int ibase_close ([int connection_id])
Возвращает TRUE или FALSE — при ошибке. Текущая транзакция (если имеется) завершается, а остальные отменяются.
Идентификатор закрываемого подключения указывается в .аргументе; если его не указывать, то закрывается последнее открытое данным сценарием подключение.
фактически использование данной функции не является обязательным, так как РНР автоматически закрывает все незакрытые неустойчивые подключения при завершении сценария.
Заметьте: устойчивые подключения, созданные функцией mysql_ pconnect(), не закрываются.
ibase_pconnect
Создание устойчивого подключения к серверу БД InterBase
int ibase_pconnect (string database [, string username [, string password [, string charset [, int buffers [, int dialect [, string role>]])
ibase pconnect() действует подобно ibase_connect() с двумя отличиями.
Перед подключением функция пытается проверить, имеется ли уже , открытое (устойчивое) подключение с параметрами, аналогичными указанным. Если такое подключение обнаруживается, то возвратается его идентификатор вместо создания нового подключения. При завершении сценария подключение не закрывается, а остается действительным для дальнейшего использования. (Функция ibase_close() не может закрыть подключения, созданные с помощью ibase_pconnect().)
См. описание аргументов в ibase_connect().
ibase_prepare
Подготовка запроса для последующего выполнения
int ibase_prepare ([int link_identifier, string query])
В дальнейшей части сценария этот запрос можно выполнить функцией ibase_execute(), указав его параметры.
ibase_execute
Выполнение подготовленного запроса
int ibase_execute (int query [, int bind_args ...])
Выполняет запрос query, подготовленный функцией ibase_prepare(). Это более эффективно, чем использование для выполнения серии запросов функцией ibase_query(), если сами запросы различаются только указываемыми параметрами.
<?php
Supdates = array
( 1 => 'Enc'. 5 => 'Filnp1. 7 => 'Larry1 ),
$query = ibase_prepare("UPDATE tbl
SET A = ? WHERE Z = ?"):
while (list($a. $r) = eachdupdates))
{ ibase_execute($query. $r. $a). } ?>
ibase_free_query
Уничтожение подготовленного запроса
int ibase_free_query (int query)
Уничтожает запрос, подготовленный функцией ibase_prepare().
ibase_query
Выполнение запроса к БД InterBase
int ibase_query ([int link_identifier. string query [, int bind_args]])
Возвращает дескриптор набора записей, обрабатываемый ibase_fetch_ row(), ibase fetch object(), ibase free result() и ibase free query().
Хотя функция поддерживает возможность указания параметров запроса, целесообразнее использовать функции ibase_prepare() и ibase_ execute().
ibase_trans
Начать транзакцию
int ibase_trans ([int trans_args [, int link_identifier]])
ibase_commit
Завершение транзакции
int ibase_commit ([int link identifier, int trans_number])
Завершает транзакцию trans_number, созданную ibase_trans().
ibase_rollback
Отмена транзакции
int ibase_rollback ([int link_identifier, int trans_number])
Отменяет транзакцию trans_number, созданную ibase_trans().
ibase free_result
Уничтожение набора записей
int ibase_free_resu1t (int result_identifier)
Освобождает память, занятую набором записей, возвращенным ibase_ query().
ibase_fetch_row
Занесение записи в нумерованный массив
array ibase_fetch_row (Int result_ldentifler)
Возвращает в массиве следующую запись из набора, возвращенного ibase_query().
ibase_fetch_object
Получение записи в свойствах объекта
object ibase_fetch_object (int resultjid)
Возвращает в свойствах псевдообъекта следующую запись из набора result_id, возвращенного ibase_query() или ibase_execute().
<php
$dbh = ibase_connect
($host. Susername, Spassword);
$stmt = 'SELECT * FROM tblname1;
$sth = ibase_query ($dbh, $stmt).
while ($row = ibase_fetch_object ($sth))
{ i print $row->email . "\n": )
ibase_close ($dbh); I ?>
См. также ibase_fetch_row().
ibase_feld_info
Получение информации о поле записи в массиве
array ibase_field_info (int result, int field number)
Возвращает массив, содержащий элементы name, alias, relation, length, type.
$rs=ibase_query
("Select * from something"):
$coln - ibase_num_fields($rs):
for ($i=0 ; $1 < $coln : $i++)
{ $col_info = ibase_field_info
($rs. $1); echo "имя поля:
".$col_info['name']."\n";
echo "синоним: ".$col_info['alias']."\n":
echo "реляция: " $col_info['relation']."\n":
echo "размер: ".$col_info['length']."\n":
echo "тип:' ".$col_info['type']."\n": }
ibase_timefmt
Установка формата возвращаемых даты и времени
int ibasejtimefmt (string format [, Int columntype])
Внутренне поля даты и времени форматируются функцией языка С strftime(), а с помощью данной функции можно установить вид форматирования возвращаемых запросами данных. В строке format, дается шаблон, по которому производится форматирование. Аргумент columntype указывает, формат каких именно полей устанавливается (только с InterBase версии 6 или выше), и может принимать константные значения IBASE_TIMESTAMP (по умолчанию), IBASE_DATE и IBASEJIME.
<?php
// формат вида '04 hours 54 minutes'.
ibase_timefmt("*H hours 2M minutes"
. !BASE_TIME) ?>
Умолчания можно установить параметрами конфигурации (php.ini): ibase.timestampformat, ibase.dateformat и ibase.timeformat.
ibase_num_fields
Получение числа полей в наборе записей
int ibase_num_fields (int result_id)
В настоящее время функция еще не работоспособна.
<?рhр
$dbh = ibase_connect
(Shost, Susername. Jpassword);
Sstmt = 'SELECT * FROM tblname':
$sth = ibasejquery ($dbh. Sstmt);
if dbase_num_fields($sth) > 0)
{ while ($row = ibase_fetch_object
(Ssth)) { print $row->email "\n": } }
else { die ("No Results were
found for your query"); }
ibase_close ($dbh); ?>
См. также ibase_field_info().
ibase_errmsg
Получение сообщения об ошибке string ibase_errmsg (void)
Поля BLOB
В PHP имеются следующие функции для работы с полями BLOB БД InterBase (документация для них пока отсутствует):

  • ibase_blob_create — создает поле BLOB, которое затем может быть сохранено запросом (возвращенный дескриптор передастся как параметр запроса);
  • ibase_blob_open -- открывает возвращенное запросом поле BLOB для операции;
  • ibase_blob_close — закрывает поле BLOB;
  • ibase_blob_add — добавляет в конец поля BLOB данные;
  • ibase_blob_import — записывает содержимое открытого файла в поле BLOB;
  • ibase_blob_get — читает содержимое поля BLOB;
  • ibase_blob_echo — выводит содержимое поля BLOB;
  • ibase_blob_info;
  • ibase_blob_cancel.

Поскольку единственной информацией об этих функциях является j пример из исходных текстов, он приводится далее.
$cnn=ibase_connect("localhost.F:
\interbase\data\aaa\iq.gdb".
"sysdba'V'masterkey") or die
("Can't connect"): ibase_query
("create table tbl
(v_integer integer. v_blob blob)"):
ibase_cominit():
Sname =
"F:\\php_src\\ext\\interbase\\blob.tmp";
$f = fopen($name."r");
$bl_s - ibase_blob_import($f);
ibase_query("ir,sert into tbl
(v_integer. v_blob) values (1. ?)", $bl_s):
$bl_h = ibase_blob_create(),
Sfp = fopen($name."r"): while
($piece = fread($fp. 1024))
{
ibase_blob_add($bl_h. $piece):
} fclosedftmp);
ibase_blobadd
($bl_h.
"+-- -----.....----------------------
+\n"):
$bl_s = ibase_blob_close
($bl_h).
ibase_query("insert into tbl
(v_integer. v_blob) values
(2. ?)", $bl_s);
$q = ibase_query
("select v_blob from tbl where
vjnteger = 2"):
$row = ibase_fetch_object
($q.lBASE_TEXT):
echo $row->V_BLOB:
bi$q = ibase_query
("select v_blob from tbl
where v_integer = 2"):
$row = ibase_fetch_object($q):
i base_blob_echo
($ row->V_BLOB):
$q = ibase_query
("select v_blob from tbl where
v_integer = 2").
$row = ibase_fetch_object($q);
$bl_h = ibase_blob_open
($row->V_BLOB);
while($piece = ibase_blob_get
($bl_h. 1024))
$blob = $piece. ibase_blob_close
($bl_h):
ibase_free_result($q): ibase_close(),
?>
Informix
Существующий модуль расширения Informix позволяет работать с БД Informix (IDS) 7.x, SE 7.x, Universal Server (IUS) 9.x и IDS 2000. IDS 7.x поддерживается полностью (включая ноля BYTE и TEXT), ] но для IUS 9.x еще не завершена поддержка типов SLOB и CLOB.
Для компиляции необходима ESQL/C (версия 7.2х или выше должна входить в Informix Client SDK) для компиляции драйвера Informix. Также должны быть установлены значения переменных системы INFORMIXDIR и добавлен каталог $INFORMIXDIR/bin в список путей PATH до запуска сценария configure (с ключом —with_informix=yes). Автоопределение каталогов файлов заголовков и библиотек может быть переопределено установкой системных переменных IFX_LIBDIR, IFXJJBS и IFXJNCDIR.
Во время выполнения переменные системы INFORMIXDIR, INFORMIXSERVER и PATH должны быть правильно инициализированы.
Для полей BLOB (TEXT и BYTE) запросом возвращаются их идентификаторы. Их содержимое можно получить в строковой переменной (если установлено ifx_blobinfile(0);) функцией ifx_get_blob($b1ob_id) или сохранить в файле (если установлено ifx_blobinfile(l);) функцией i fx_get_blob($bl ob_i d);.
ifx_connect
Подключение к серверу БД Informix
int ifx_connect ([string database [, string user [, string password]]])
Все аргументы необязательны, и если их не указывать, то используются значения из файла конфигурации: ifx.default_host (если не указано иное, библиотеки Informix используют значение системной переменной INFORMIXSERVER), ifx.default_user, ifx.default_password. Возвращается дескриптор подключения или FALSE — при ошибке. $conn_id = ifx_connect ("mydb@ol_srvl". "imyself". "mypassword"):
Если функция повторно вызывается с теми же аргументами, новое подключение не создается, а возвращается идентификатор имеющегося.
В конце сценария принято закрывать подключение функцией ifx_ close(), но этого можно не делать, поскольку РНР автоматически закрывает все (неустойчивые) подключения при завершении сценария.
См. также: ifx_pconnect() и ifx_close().
ifx_pconnect
Создание устойчивого подключения к серверу БД Informix
int ifx_pconnect ([string database [, string userid [, string password]]])
Возвращается дескриптор подключения или FALSE — при ошибке. ifx_pconnect() действует подобно ifx_connect() с двумя отличиями.
Перед подключением функция пытается проверить, имеется ли уже открытое (устойчивое) подключение с параметрами (БД, пользователь, пароль), аналогичными указанным. Если такое подключение обнаруживается, то возвращается его идентификатор вместо создания нового подключения. При завершении сценария подключение не закрывается, а остается действительным для дальнейшего использования. (Функция ifx_close() не может закрыть подключения, созданные с помощью ifx_pconnect().)
См. также ifx_connect().
ifx_close
Закрытие подключения к Informix
int ifx_close ([int linkjdentifier]) Всегда возвращает TRUE.
Идентификатор закрываемого подключения указывается в аргументе; если сто не указывать, то закрывается последнее открытое данным сценарием подключение.
Фактически использование данной функции не является обязательным, так как РНР автоматически закрывает все незакрытые неустойчивые подключения при завершении сценария.
Устойчивые подключения, созданные функцией ifx_pconnect(), не закрываются.
$corn_id = ifx_connect
("mydb@ol_srv". "itsme". "mypassword").
ifx__close($conn_id):
См. также: ifx_connect() и ifx_pconnect().
ifx_query
Выполнение запроса к БД Informix
int ifx_query (string query [, int linkjdentifier [, int cursorjtype [, mixed blobidarray]]])
Посылает запрос текущей БД, активной для текущего (последнего открытого) подключения или указанного в linkjidentifier. Если подключений не имеется, то косвенно вызывается функция ifx_connect() с параметрами по умолчанию.
Возвращает дескриптор набора возвращенных записей или FALSE -при ошибке.
Для запросов SELECT необязательным аргументом cursorjtype можно указать специальный тип курсора (значение формируется бито-I вой маской из констант IFX_SCROLL, IFXjHOLD).
В зависимости от тина запроса число возвращенных (измененных) записей (приблизительное или фактическое) можно выяснить функцией ifx_affected_rows().
Если в запросе передаются поля BLOB (BYTE или TEXT), то в аргументе (массиве) blobidarray указываются дескрипторы (blob ids), а в запросе вместо их значений ставится знак «?>>.
Если содержимое полей TEXT (или BYTE) допускает, можно использовать функции ifx_textasvarchar(l) и ifx_byteasvarchar(l), что позволяет работать с этими полями (получать их содержимое), как если бы они были обычными (но длинными) нолями VARCHAR, не заботясь о blob дескрипторах. В противном случае придется использовать дополнительные функции.
В ситуации ifx_textasvarchar(0) и ifx_byteasvarchar(0) (по умолчанию) запросы выборки возвращают для полей BLOB их дескрипторы (целые числа). Их содержимое можно получить специальными функциями.
// Пример 1. распечатать всю таблицу
"orders" в виде html ifx_textasvarchar(l).
// use "text mode" for blobs $res_id =
ifx_query("select * from orders". Sconnjid).
if (! Sresjid) { pnntf(
"Can't select orders : lsn<br>ls<br>\n"
. ifx_error()). ifx_errormsg().
dieT } ifx htmltbl_result
($res_id "border=\"l\"");
1Т~х_(тре_г_)
// Пример 2 добавление записей
в таблицу "catalog"
// создать blob поля
$te<tid - ifx_create_blcb(0, 0.
"Text column in memory"):
Sbyteid = ifxj:reate__blob
(l. 0. "Byte column in memory"):
// внести blob id в массив $blobidarray[]
= Stextid. $blobidarray[] = $byteid,
// выполнить запрос
$query = "insert into catalog
(stockjium, manu_code. "
. "cat_descr. cat_pictun;) val ues
(1.' HRO'.7. ?)":
$res_id = ifx_query($query.
$conn_id. Sblobidarray).
if (! $res_id)
{ .. error . . }
i fx_free_result($ resj d):
См. также ifx_connect().
ifx_prepare
Подготовка SQL-запроса для последующего выполнения
int lfx_prepare (string query, int conrMd [, Int cursor_def. mixed blobidarray])
Возвращает дескриптор, используемый в функции ifx_do(). Для запросов SELECT необязательным аргументом cursor_type можно указать тип курсора (значение формируется битовой маской из констант IFXJCROLU IFXJHOLD).
Если в запросе передаются поля BLOB (BYTE или TEXT), то в аргументе (массиве) blobidarray указываются дескрипторы (blob ids), а в запросе вместо их значении ставится знак «?>>.
Если содержимое полей TEXT (или BYTE) допускает, можно использовать функции ifx_textasvarchar(l) и ifx_byteasvarchar(l), что позволяет работать с этими полями (получать их содержимое), как если бы они были обычными (но длинными) полями VARCHAR, не заботясь о blob дескрипторах. В противном случае придется использовать дополнительные функции.
Подготовленные запросы позволяют сперва вычислить число подходящих запросу записей функцией ifx_affected_rows().
См. также ifx_do().
ifx_do
Выполнение подготовленного запроса
int ifx_do (int result_id)
Возвращает TRUE или FALSE — при ошибке.
См. также: ifx_prepare(), ifx_affected_rows().
ifx_error
Получение кода ошибки последней операции Informix string ifx_error(void);
Возвращаемая строка описания ошибки форматируется следующим
образом:
х [SQLSTATE = (две цифры) (три цифры) SQLCODE=cccc],
где х — один из символов, означающих:

  • пробел — без ошибки;
  • Е — ошибка;
  • N — больше нет данных;
  • W — предупреждение;
  • ? — неопределенное сообщение.

Если х-символ не пробел, то SQLSTATE и SQLCODE описывают детали ошибки (см. документацию БД).
См. также ifx_errormsg().
ifx_errormsg
Получение описа, мя ошибки последней операции
string ifx_errormsg ([int errorcode])
Если в аргументе указать код ошибки, то будет получено ее описание.
printf("£s\ri<br>", ifx_errormsg(-201)); См. также ifx_error().
ifx_affected_rows
Получение числа измененных или возвращенных записей
int ifx_affected_rows (int resulted)
В аргументе указывается дескриптор набора записей, возвращенный функцией ifx_query() или ifx_prepare().
Для запросов типа INSERT, UPDATE и DELETE возвращается число фактически добавленных, измененных, удаленных записей (зна-

чение sqlerrd[2]). Для запросов выборки SELECT это предполагаемое число (sqlerrd[0]), которое не всегда верно.

См. также ifx_num_rows().
ifx_getsqlca
Получение параметров запроса sqlca.sqlerrd[0..5] array ifx_getsq"lca (Int resu"lt_id)
В аргументе указывается дескриптор набора записей, возвращенный функцией ifx_query() или ifx_prepare(). Возвращается ассоциативный массив, содержащий дополнительные результаты выполнения запроса сервером sqlerrd() ... sqlerrdS. Альтернативно ту же операцию можно выполнить запросом "SELECT dbinfo( 'sqlca.sqlerrdx')".
// предполагается, что первое поле таблицы tbl последовательное Sqid = ifx_query("INSERT INTO tbl
VALUES (0. '2nd column', 'another column') ". Sconmd); if (! $qid) { ... error ... } Ssqlca = ifx_getsqlca (Sqid): echo "Последовательное значение добавленной записи: " .
$sqlca["sqlerrdl"].
ifx_fetch_row
Занесение записи в массив
array ifx_fetch_row (int result_id [, mixed position])
Возвращает в ассоциативном массиве (индексами служат имена полей) запись из результата запроса (возвращенного функциями ifx_query() или ifx_prepare()) или FALSE, если записей больше не имеется.
Для полей BLOB возвращаются их цифровые идентификаторы, которые можно использовать в функции ifx_get_blob() (если, конечно, не использовались ifx_textasvarchar(l) или ifx_byteasvarchar(D).
Необязательным аргументом position для SCROLL курсоров можно указать, какую запись следует возвратить: "NEXT", "PREVIOUS", "CURRENT", "FIRST", "LAST" или «абсолютный» номер записи.
Последующие вызовы (по умолчанию возвращают следующие записи).
ifx_htmltbl_result
Вывод результатов запроса в таблице HTML
int ifx_htmltbl_result (int resultjid [, string html_table_options])
Возвращает число выведенных записей или FALSE — при ошибке. Во втором аргументе можно указать атрибуты тега <table>.
ifx_ fieldtypes
Получение списка полей набора записей array ifx_fieldtypes (int resu1t_id)
Возвращает ассоциативный массив (имена полей являются индексами, а SQL-типы полей — значениями) или FALSE — при ошибке. В аргументе указывается результат запроса.
ifx_ fieldproperties
Получение списка свойств полей
array ifx_fieldproperties (Int result_id)
Возвращает ассоциативный массив (имена нолей являются индексами, а SQL-свойства полей — значениями) или FALSE — при ошибке. В аргументе указывается результат запроса.
Свойства полей кодируются в виде: "SQLTYPE;length;precision;scale: ISNULLABLE", где SQLTYPE - тип поля Informix (например, "SQLVCHAR"), a ISNULLABLE = "Y" или "N".
Получение числа полей, возвращаемых запросом
int ifx_num_fields (int resultjid)
ifx_num_rows
Получение числа записей, уже полученных из результата запроса
Int ifx_nura_rows (int result_id)
ifx_ free_result
Уничтожение результата запроса
int ifx_free_resu!t (int result_id)
ifx_create_char
Создание char-объекта
int ifx_create_char (string param)
В аргументе указывается содержимое объекта.
ifx_free_char
Уничтожение char-объекта
int ifx_free_char (int bid)
Возвращает TRUE или FALSE — при ошибке.
ifx_update_char
Изменение содержимого char-объекта
int ifx_update_char (int bid, string content) Возвращает TRUE или FALSE — при ошибке.
ifx_get_char
Получение содержимого char-объекта int ifx_get_char (int bid)
ifx_create_blob
Создание blob-объекта
int ifx_create_btob (int type, int mode, string param)
Аргумент type указывает тип: 1 = TEXT, 0 = BYTE;
mode: 0 — что содержимое объекта будет сохраняться в памяти, 1 -в файле;param: если mode = 0, это содержимое объекта, а если mode = 1 — это дескриптор файла данных.
Возвращает идентификатор созданного объекта или FALSE — при ошибке.
ifx_copy_blob
Клонирование blob-объекта
int ifx_copy_blob (int bid)
Возвращает идентификатор созданного объекта или FALSE — при ошибке.
ifx_free_blob
Закрытие blob-объекта
int ifx_free_blob (int bid)
Возвращает TRUE или FALSE — при ошибке.
ifx_get_blob
Получение содержимого blob-объекта
int ifx_get_blob (int bid)
В аргументе указывается идентификатор, полученный запросом.
Если установлено ifx_blobinfile(l), возвращается имя созданного файла, в котором сохранено содержимое поля. Ответственность за удаление этого временного файла возлагается на вас. Размещение его зависит от переменной окружения blobdir (по умолчанию = ".", то есть в текущем каталоге); файлы имеют префикс btb. Для облегчения очистки используйте, например, putenv("bдobdir=tmpblob");.
ifx_update_blob
Изменение содержимого объекта blob
int ifx_update_blob (int bid, string content)
Возвращает TRUE или FALSE — при ошибке.
ifx_ blobinfile_mode
Установка режима получения содержимого объектов blob
Если указывается значение 0, то содержимое будет сохраняться в памяти, а если 1, то в файле. Умолчание также устанавливается в файле конфигурации.
ifx_extasvarchar
Установка режима получения полей TEXT
void ifx_textasvarchar (int mode)
Если указывается значение 0, то для полей TEXT запросом будет возвращаться их идентификатор, а если 1, то непосредственно их содержимое. Значение по умолчанию также устанавливается в файле конфигурации.
ifx_byteasvarchar
Установка режима получения полей BYTE void ifx_byteasvarchar (int mode)
Если указывается значение 0, то для полей BYTE запросом будет возвращаться их идентификатор, а если 1, то непосредственно их содержимое. Умолчание также устанавливается в файле конфигурации.
ifx_nullformat
Установка формата значений NULL void ifx_nullformat (int mode)
Устанавливает, какое значение будет возвращаться запросом для значений NULL. Если указывается значение mode "О", будет возвращаться пустая строка "", а если 1, то значение NULL. Умолчание также устанавливается в файле конфигурации.
ifxus_create_slob
Создание объекта slob и его открытие
int ifxus_create_slob (int mode)
Аргументом можно указать режим открытия (возможны битовые комбинации): 1 = LO_RDONLY, 2 = LOJWRONLY, 4 - LO_APPEND, 8 = LO_RDWR, 16 = LO_BUFFER, 32 = LO_NOBUFFER. Также возможно использовать именованные константы IFX_LO_RDONLY, IFX_LO_ WRONLY и т. и. Возвращает идентификатор созданного объекта или FALSE — при ошибке.
ifxus_free_slob
Удаление объекта slob
int ifxus_free_slob (int bid) Возвращает TRUE или FALSE — при ошибке.
ifxus_close_slob
Закрытие slob-объекта
int ifxus_c"lose_slob (int bid)
Возвращает TRUE или FALSE — при ошибке.
ifxus_open_slob
Открытие объекта slob
int ifxus_open_slob (long bid, int mode)
Аргументом mode можно указать режим открытия (возможны битовые комбинации): 1 = LO_RDONLY, 2 = LO_WRONLY, 4 = LO_APPEND, 8 = LO_RDWR, 16 = LO_BUFFER, 32 = LO_NOBUFFER. Также возможно использовать именованные константы IFX_LO_RDONLY, IFX_LO_ WRONLY и т. п. Возвращает идентификатор созданного объекта или FALSE — при ошибке.
ifxus_tell_slob
Получение позиции курсора
int ifxus_tell_slob (long bid)
Возвращает текущую позицию (чтения/записи) открытого slob-объекта bid или FALSE — при ошибке.
ifxus_seek_slob
Установка позиции курсора
int ifxus_seek_blob (long bid, int mode, long offset)
Устанавливает позицию (чтения/записи) offset открытого slob-объекта bid в байтах. Возвращает позицию или FALSE — при ошибке.
В аргументе mode указывается, от какого места отчитывается смещение: 0=LO_SEEKlSET (от начала), 1-LO_SEEK_CUR (от текущей позиции), 2=LO_SEEK_END (от конца).
ifxus_read_slob
Чтение данных из объекта slob
string ifxus_read_slob (long bid, long nbytes)
Возвращает прочитанную строку данных размером nbytes байт из slob-объекта bid или FALSE — при ошибке.
ifxus_write_slob
Запись данных в объект slob
int ifxus_write_slob (long bid, string content)
Записывает строку данных content в slob-объект bid. Возвращает число записанных байт пли FALSE — при ошибке.
Ingres II
Для использования этих функций необходимо скомпилировать РНР
с поддержкой 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().

 

 
На главную | Содержание | < Назад....Вперёд >
С вопросами и предложениями можно обращаться по nicivas@bk.ru. 2013 г. Яндекс.Метрика