На главную страницу
Форум txt.version   




Статья :: Взаимодействие с базами данных

Взаимодействие с базами данных

ODBC

В дополнение к поддержке обычных драйверов ODBC, данная группа функций позволяет работать с базами данных, поддерживающими так называемый интерфейс Unified ODBC. В число БД, использующих API Unified ODBC, входят: Adabas D (http://www.adabas.com), IBM DB2 (http://www.ibm.com/db2), iODBC (http://www.iodbc.org), Solid (http://www.solidtech.com) и Sybase SQL Anywhere (http://www. sybase.com).

Схемы работы с различными БД практически идентичны и различаются только в отношении внутреннего функционирования серверов БД.

См. также раздел «Инсталляция в системах Unix» относительно конфигурирования поддержки этих БД при компиляции.

Заметьте, что использование драйверов ODBC снижает производительность и не является оправданным, если, конечно, вы не планируете менять БД вашего приложения достаточно часто. Более обоснованно использовать первичные функции РНР интерфейса соответствующей БД.

Но что касается БД с интерфейсом Unified ODBC, то здесь не используются сами ODBC драйверы, просто все они используют единую архитектуру API, аналогичную ODBC.

odbc_connect

Подключение к источнику данных (БД)

int odbc_connect (string dsn. string user, string password [, int cursor J:ype])

Возвращает дескриптор подключения к БД (используемый последующими функциями) или О (FALSE) при ошибке. Одновременно можно открывать несколько подключений. В общем случае для открытия подключения необходимо указывать имя системного источника данных DSN, имя и пароль клиента. В Unix-системах иногда возникает проблема подключений, которая может быть устранена указали-

ем параметров подключения в одной строке аргумента dsn в виде
«DSN=DataSource:UID=UserName;PWD=Password».

В необязательном четвертом аргументе можно указать тип курсора БД, и это часто помогает решить проблемы с некоторыми БД; например, при попытке выполнения хранимых процедур (при вызове которых возникает ошибка типа: "Cannot open a cursor on a stored procedure that has anything other than a single select statement in it"), и в таких случаях может помочь указание типа курсора SQL_CUR_ USE_ODBC. Тип курсора может быть указан одной из следующих констант:

  • SQL_CUR_USE_IF_NEEDED;
  • SQL_CUR_USE_ODBC;
  • SQL_CUR_USE_DRIVER;
  • SQL_CUR_DEFAULT.

odbc_pconnect

Создание устойчивого подключения

int odbc_pconnect (string dsn, string user, string password [, \ int cursor_type])

Возвращает дескриптор подключения к БД или FALSE — при ошибке.

Перед подключением функция пытается проверить, имеется ли уже открытое (устойчивое) подключение с параметрами (имя источника данных, пользователя и пароль), аналогичными указанным. Если такое подключение обнаруживается, то возвращается его идентификатор вместо создания нового подключения.

При завершении сценария подключение не закрывается, а остается действительным для дальнейшего использования. Но устойчивые подключения не работают, если РНР запускается в режиме CGI.

odbc_close

Закрытие сеанса подключения ODBC

void odbc_close (int connection_id)

Заметьте, при имеющихся незавершенных транзакциях функция не закрывает подключение.

odbc_close_all

Закрытие всех подключений ODBC

void odbc_close_aTI(void);

odbc_cursor

Определение типа курсора для подключения

string odbc_cursor (int result_id)

Возвращает имя курсора, используемого в подключении result_ld.

odbc_do

Синоним odbc_exec

int odbc_do (int conn_id, string query)

odbc_exec

Выполнение запроса SQL

int odbc_exec (int connection_id, string query_string)

Возвращает дескриптор набора записей, возвращенных запросом query_string, или FALSE — при ошибке. Параметр connectionjid должен быть ранее успешно возвращен функцией odbc_connect() или odbc_pconnect().

См. также: odbc_prepare() и odbc_execute().

odbc_prepare

Подготовка запроса

int odbc_prepare (int connection_id, string query_string)[

Функция возвращает дескриптор запроса, который затем исполь зуется в функции odbc_execute() для его исполнения, или FALSE — в случае ошибки.

odbc_execute

Выполнение подготовленного запроса

int odbc_execute (int result_id [, array parameters_array])

Выполняет запрос resu1t_id, подготовленный функцией odbc_prepare(). Возвращает TRUE или FALSE — при ошибке. В массиве parameters_array можно указать параметры запроса, если они требуются.

odbc_autocommit

Переключение режима транзакций autocommit

int odbc_autocommit (int connection_id [, int OnOff])

Если не указывается аргумент OnOff, функция возвращает текущее состояние auto-commit для подключения connection_id. True означает «разрешено», a FALSE — «не разрешено» или произошла ошибка.

Если в значении аргумента OnOff указывается значение TRUE, то последующие запросы исполняются незамедлительно, если FALSE — то они откладываются до вызова функции odbc_commit() (таким образом формируя транзакцию). При этом возвращается TRUE или FALSE — при ошибке.

По умолчанию вес запросы исполняются незамедлительно, и запрещение состояния auto-commit равносильно началу транзакции.

См. также: odbc_commit() и odbc_rollback().

odbc_commit

Завершение транзакции

int odbc_commit (int connectiorMd)

Выполняет все отложенные запросы (транзакцию) для подключения connectiorMd и возвращает TRUE или FALSE — при ошибке.

odbc_rollback

Отмена транзакции

int odbc_rollback (int connection_id)

Отменяет псе отложенные запросы (транзакцию) для подключения connection_id и возвращает TRUE или FALSE — при ошибке.

odbc_num_rows

Получение числа возвращенных записей

int odbc_num_rows (int resulted)

; В аргументе указывается дескриптор результата, возвращенный ODBC ' запросом. При ошибке возвращается -1. Для запросов INSERT, UPDATE и DELETE возвращается число вставленных, измененных, удаленных записей; для запроса SELECT — число возвращенных запросом записей (некоторые драйверы возвращают -1 вне зависимости от того, сколько записей было возвращено).

odbc_num_fields

Определение числа полей в результате

int odbc_num_fields (int result_id)

В аргументе указывается дескриптор результата, возвращенный ODBC запросом (функцией odbc_exec()). Функция возвращает число полей (столбцов), содержащихся в наборе записей, возвращенных запросом, либо -1 в случае ошибки.

Обработка полей LONGVARBINARY определяется odbc_binmode().

odbc_result

Получение данных результата запроса

string odbc_result (int result_id, mixed field)

Возвращает содержимое поля, указанного аргументом field текущей записи. Поле может быть указано номером (начиная с 1) или именем:

$item_3 = odbc_result ($Query_ID. 3);
$item_val = odbc_result ($Query_ID. "id"):

Данные полей типа long или двоичные данные возвращаются согласно установкам функций odbc_binmode() и odbcJongreadlen().

odbc_result_all

Распечатка результата запроса в таблице HTML

int odbc_result_all (int result_id [. string format])

Возвращает число выведенных записей или FALSE — при ошибке. В аргументе result_id указывается дескриптор набора записей, возвращенный функцией odbc_exec(), а в строке format можно указать атрибуты тега <TABLE ... >.

odbc_fetch_row

Установка курсора текущей записи

int odbc_fetch_row (int resu!t_id [, int rowjiumber])

Выбирает запись номер rowjiumber (или по умолчанию следующую) . из набора записей resultjid, возвращенного функциями odbc_do() или odbcjaxec(). Возвращает TRUE или FALSE — при ошибке (например, когда записи с таким номером не существует). Последующие вызовы odbc_result() будут возвращать данные из выбранной записи. Нумерация начинается с 0. Не все драйверы допускают произвольный выбор записи.

$сnn = odbc_conrect
("MyDSN"."root" "passI23"):
$rs = odbcjBxecdcnn. "SELECT * FROM tbll").
echo "Записей. ".
$nr = odbc_num_rows($rs).
echo ".иполей: ".
$nf - odbc_num_fields($rs);
// распечатать в виде [n]
'aaa'. '666'. 'ввв'. for($r=l; $r<=$nr; $r++)
{ // записи echo "\n[$r] ".
odbc_fetch_row($rs.$r).
for($f=l: $f<=$nf: $f++)
// поля echo "'",
odbc result(Srs.$f). "'.": }

odbc_fetch_into

Занесение полученной записи в массив

int odbc_fetch_into (int result id [, int rownumber. array resu"lt_array])

Заносит поля записи номер rownumber из набора записей result_id в элементы массива resu"lt_array. Возвращает число полей набора записей (результата запроса) или FALSE — при ошибке.

$cnn = odbc_connect
( 'MyDSN"."root"."pass!23").
$rs = odbc_exec
($cnn."SELECT * FROM tbll").
for($r=l; $r<=odbc_num_rows
($rs): $r++) { odbc_fetch_into($rs.$r.$arr):
$ar[]=$arr
// занести набор записей в двухмерный массив

odbc_ field_name

Определение имени поля

string odbc_field_name (int result_id, int field_number)

Возвращает имя поля по его номеру field_number в наборе записей result_id. Нумерация начинается с 1. При ошибке возвращает FALSE.

odbc_field_num

Определение порядкового номера поля

int odbc_field_num (int result_id, string field_name)

Возвращает номер поля по его имени field_name в наборе записей result_id. Нумерация начинается с 1. При ошибке возвращает FALSE.

odbc_field_type

Получение типа данных поля

string odbc_field_type (int resulted, int fieldjiumber)

Возвращает SQL-тип поля с номером field_number в наборе записей result_id. Нумерация начинается с 1. При ошибке возвращает FALSE.

odbc_field_len

Получение длины (точности) поля

int odbc_field_len (int resultjid, int fieldjiumber)

См. также: odbc_field_scale().

odbc_field_precision

Синоним odbc_fieldjen()

string odbc_field_precision (int result_id, int field_number)

odbc_field_scale

Определение точности поля

string odbc_field_scale (int result_id, int field_number)

Функция возвращает число сохраняемых десятичных знаков после запятой для полей дробных чисел.

odbc_free_result

Освобождение ресурсов, занятых набором записей

int odbcjreej-esult (Int result_id)

Всегда возвращает TRUE. Поскольку при завершении сценария освобождаются вес выделенные ему ресурсы, использовать данную функцию имеет смысл только в случае крайней экономии памяти, расходуемой сценарием.

Если транзакция была начата, но не завершена (см. odbc_autocommit()), данная функция отменяет ее.

odbc_binmode

Определение обработки двоичных полей

int odbc_binmode (int result_id, int mode)

Функция управляет обработкой полей ODBC SQL типов BINARY, VARBINARY, LONGVARBINARY. Если resultjd равен О, то установки будут применяться к новым наборам записей.

  • ODBC_BINMODE_PASSTHRU - пропускать двоичные поля;
  • ODBC_BINMODE_RETURN — возвращать двоичные поля как есть (по умолчанию); ,
  • ODBC_BINMODE_CONVERT - возвращать двоичные поля, конвертируя.

Пропуск (в нервом случае) означает, что при использовании функции odbc_fetch_into() для полей этого типа будет возвращаться nycтая строка.

В последнем случае конвертация означает, что каждый байт данных будет представлен двумя шестнадцатсричными цифрами, например, двоичный байт 00000001 будет представлен как "01", а 11111111 — как "FF".

Обработка длинных двоичных полей также зависит от параметра, установленного функцией odbcJongreadlen().

Binmode

longreadlen

Результат

ODBC BINMODE PASSTHRU

0

Пропускать

ODBC BINMODE RETURN

0

Пропускать

ODBC_BINMODE_CONVERT

0

Пропускать

ODBC BINMODE PASSTHRU

>0

Пропускать

ODBC BINMODE RETURN

>0

Возвращать как есть

ODBC BINMODE CONVERT

>0

Конвертировать

odbc_longreadlen

Обработка полей LONG

int odbc_longreadlen (int result_id, Int length)

Функция управляет обработкой полей ODBC SQL типов LONG, LONGVARBINARY. В аргументе length указывается, сколько байтов следует возвращать из полей данных типов. По .умолчанию возвращается 4096 байтов.

См. также odbc_binmode().

odbc_setoption

Настройка параметров ODBC

int odbc_setoption (int id. int function, int option, int parara)

Если в аргументе function указывается значение 1, то тогда настраиваются параметры подключения (в этом случае в аргументе id необходимо указывать дескриптор подключения); если указывается 2, то настраиваются параметры запроса (тогда в id указывается настраиваемый запрос).

Это позволяет устранить проблемы с некоторыми своеобразными драйверами ODBC. Конечно, вы должны понимать, какой эффект будет иметь установка того или иного параметра для конкретного драйвера. Пользуйтесь документацией ODBC и не забывайте, что 1 функциональность различных версий драйверов может различаться.

Так как использование этой функции сильно зависит от специфики ODBC драйвера, использовать ее в публикуемых сценариях РНР не рекомендуется. Имейте также в виду, что некоторые параметры доступны только после открытия подключения или подготовки запроса.

Аргумент option - номер устанавливаемого параметра, а рагат — ее значение.

При ошибке возвращается FALSE; иначе TRUE.

// Номер параметра SQL_AUTOCOMM!T
в SQLSetConnectOptionO: 102
// Значение 1 для
SQL_AUTOCOMMIT - SQL_AUTOCOMMIT_ON.
// Следующая строка имеет тот же эффект, что и
// odbc_autocorrmit($conn. TRUE);
odbc_setoption (Sconn. 1. 102. 1):
// Номер параметра SQL_QUERY_TIMCOUT
в SQLSetStmtOption(): 0
// Следующая строка устанавливает
предел выполнения запроса в 30 сек.
tresult = odbc_prepare ($conn. $sq!):
odbc_setoption (Sresult. 2. 0. 30). odbc_execute
(Sresult):

odbc_tables

Получение списка таблиц источника данных

int odbc_tables (Int connection_id [, string qualifier [,

string owner [, string name [, string table_type>)

Возвращает в наборе записей перечисление имеющихся в источнике данных connection_id таблиц (определенного типа table_type). Возвращаемый набор записей содержит следующие ноля:

  • TABLE_QUALIFIER;
  • TABLE_OWNER;
  • TABLE_NAME — имя таблицы;
  • TABLE_TYPE — тип таблицы; например, «TABLE», «VIEW»;
  • REMARKS — примечания; например, «MySQL table».

Возвращаемый набор записей сортируется в порядке: TABLE_TYPE, TABLE_ QUALIFIER, TABLEJJWNER, TABLE_NAME.

Аргументы owner и name могут содержать шаблоны («%» заменяет ноль и более символов, а «_» — один символ).

Чтобы получить перечисление возможных значений аргументов qua- / li-ficr, owner и table type, используется следующая семантика:

  • Если qualifier = "%", a owner и name — пустые строки, то возвраща- \ ется набор записей, содержащий перечисление возможных квали-фикаторов источника данных. (Все поля, за исключением TABLE_ QUALIFIER содержат пустые значения NULL.) Обычно это каталоги (БД), но не все БД используют их.
  • Если owner = "%", a qualifier и name — пустые строки, то возвращается набор записей, содержащий перечисление владельцев источника данных. (Все поля, за исключением TABLE_OWNER, содержат пустые значения NULL.)
  • Если tablejtype = "%", a qualifier, owner и name — пустые строки, то возвращается набор записей, содержащий перечисление возможных типов таблиц источника данных. (Все поля, за исключением TABLE_TYPE, содержат пустые значения NULL.)

Если table_type не пустая строка, то она должна содержать перечисление через запятую типов запрашиваемых таблиц, (например, в виде: «'TABLE1.'VIEW'» или «TABLE, VIEW»).

$rs = odbc_tables($cnn. "".""."%". 'TABLF" ):
// все имеющиеся таблицы

См. также odbc_tableprivileges().

odbc_tableprivileges

Получение списка привилегий таблиц

int odbc_tableprivileges (int connect1on_id [, string qualifier [, string owner [, string name]]])

Возвращает список таблиц и присвоенных им привилегий в наборе записей или FALSE при ошибке. Возвращаемый набор записей сортируется в порядке: TA8LEJUALIFIER, TA8LE_OWNER, TABLEJAME и содержит следующие поля:

  • TABLE_QUALIFIER;
  • TABLE_OWNER;
  • TABLEJJAME;
  • GRANTOR;
  • GRANTEE;
  • PRIVILEGE;
  • IS_GRANTABLE.

Аргументы owner и name могут содержать шаблоны («%» заменяет .. ноль и более символов, а «_» — один символ).

См. описание odbc tables().

odbc_statistics

Получение описания таблицы

int odbc_statisties (int connection_id, string qualifier, string owner, string tablejiame, int unique, int accuracy)

Возвращает список таблиц и их индексов в наборе записей или FALSE — при ошибке. Возвращаемый набор записей сортируется в порядке: NONJJNIQUE, TYPE, INDEX_QUALIFIER, INDEXJAME и SEQ_IN_INDEX и содержит следующие ноля:

  • TABLE_QUALIFIER;
  • TABLE JMIER;
  • TABLE NAME;
  • NONJJNIQUE;
  • INDEX_QUALIFIER;
  • INDEX_NAME;
  • TYPE;
  • SEQ_IN_INDEX;
  • COLLATION;
  • CARDINALITY;
  • PAGES;
  • FILTER_CONDITION.

odbc_columns

Перечисление полей заданной таблицы

int odbc_columns (int connection_id [, string qualifier [, string owner [, string tablejiame [, string column_name>)

Возвращает список полей таблицы table_name в наборе записей или FALSE — при ошибке. Возвращаемый набор записей сортируется в порядке: TABLE_QUALIFIER, TABLE_OWNER и TABLEJAME и содержит следующие поля:

  • TABLE_QUALIFIER;
  • TABLE_OWNER;
  • TABLE_NAME;
  • COLUMN_NAME;
  • DATA_TYPE;
  • TYPE_NAME;
  • PRECISION;
  • LENGTH;
  • SCALE;
  • RADIX;
  • NULLABLE;
  • REMARKS.

Аргументы owner, tablejname и columnjiame могут содержать шаблоны («%» заменяет ноль и более символов, а «_» — один символ).

См. также odbc_columnprivileges().

odbc_columnprivileges

Перечисление полей заданной таблицы с их привилегиями

int odbc_co1umnprivileges (int connection_id [, string qualifier [, string owner [, string table_name [, string column_name>)

Возвращает список полей таблицы table_name в наборе записей или FALSE — при ошибке. Возвращаемый набор записей сортируется в порядке: TABLE_QUALIFIER, TABLE_OWNER и TABLE_NAME и содержит следующие поля:

  • TABLE_QUALIFIER;
  • TABLEJMER;
  • TABLE_NAME;
  • GRANTOR;
  • GRANTEE;
  • PRIVILEGE;
  • IS_GRANTABLE.

Аргумент column_name может содержать шаблоны («%» заменяет ноль и более символов, а <<_» — один символ).

odbc_gettypeinfo

Определение типов поддерживаемых данных

int odbc_gettypeinfo (Int connectien_id [, int data_type])

Возвращает набор записей, содержащий перечисление поддерживаемых БД типов данных; если необходимо выяснить, поддерживается ли конкретный тип данных, его необходимо указать в аргументе data_type. При ошибке возвращается FALSE.

А В наборе записей возвращаются следующие поля:

  • TYPEJIAME;
  • OATA_TYPE;
  • PRECISION;
  • LITERAL_PREFIX;
  • LITERAL_SUFFIX;
  • CREATE_PARAMS;
  • NULLABLE;
  • CASE_SENSITIVE;
  • SEARCHABLE;
  • UNSIGNED_AnRIBUTE;
  • MONEY;
  • AUTO_INCREMENT;
  • LOCAL_TYPE_NAME;
  • MINIMUM_SCALE;
  • MAXIMUM_SCALE.

Записи сортируются по полям DATA_TYPE и TYPE_NAME.

odbc_primarykeys

Подбор поля, способного быть первичным ключом таблицы

int odbc_primarykeys (int connection_id, string qualifier, string owner, string table)

Возвращает набор записей, содержащий список полей, которые могут претендовать на роль первичного ключа таблицы table. При ошибке возвращается FALSE.

В наборе записей возвращаются следующие поля:

  • TABLE_QUALIFIER;
  • TABLE_OWNER;
  • TABLEJAME;
  • COLUMN_NAME;
  • KEYJEQ;
  • PK_NAME.

odbc_foreignkeys

Получение списка внешних ключей

int odbc_foreignkeys (int connection_id, string pk_qualifier, string pk_owner, string pk_table, string fk_qualifier, string fk_owner, string fk_table)

Если pk_table содержит имя таблицы, то функция возвращает набор записей, содержащий первичный ключ этой таблицы и все внешние ключи (foreign keys), которые на него ссылаются.

Если fk_tab!e содержит имя таблицы, то функция возвратцает набор записей, содержащий все внешние ключи этой таблицы и корреспондирующие первичные ключи в других таблицах.

Если и pk_table и fk_table содержат имена таблиц, функция возвращает внешний ключ таблицы fk_table, который указывает на первичный ключ в таблице pk_table.

В возвращаемом наборе записей содержатся следующие поля:

  • PKTABLE_QUALIFIER;
  • PKTABLE_OWNER;
  • PKTABLEJJAME;
  • PKCOLUMN_NAME;
  • FKTABLE_QUALIFIER;
  • FKTABLE_OWNER;
  • FKTABLE_NAME;
  • FKCOLUMN_NAME;
  • KEYJEQ;
  • UPDATE_RULE;
  • DELETE_RULE;
  • FK_NAME; . PKJWME.

odbc_procedures

Получение списка хранимых процедур

int odbc_procedures (int connection_id [, string qualifier [, string owner [, string name]]])

Возвращает список хранимых процедур name в наборе записей, содержащем следующие поля:

  • PROCEDURE_QUALIFIER;
  • PROCEDUREJMER;
  • PROCEDURE_NAME;
  • NUMJNPUTJ» ARAMS;
  • NUM_OUTPUT_PARAMS;
  • • NUM_RESULT_SETS;
  • REMARKS;
  • PROCEDURE_TYPE.

Аргументы owner и name могут содержать шаблоны («%» заменяет ноль и более символов, а «_» — один символ).

odbc_procedurecolumns

Получение списка параметров хранимых процедур

int odbc_procedurecolumns (int connection_id [, string qualifier [, string owner [, string proc [, string column>)

Возвращает список хранимых процедур (с их входными и выходными параметрами и описанием возвращаемых ими полей) в наборе записей, содержащем следующие поля:

  • PROCEDURE_QUALIFIER;
  • PROCEDURE J1WNER;
  • PROCEDUREJAME;
  • COLUMN_NAME;
  • COLUMN_TYPE;
  • DATATYPE;
  • TYPEJAME;
  • PRECISION;
  • LENGTH;
  • SCALE;
  • RADIX;
  • NULLABLt;
  • REMARKS.

Записи сортируются по полям PROCEDURE_QUALIFIER, PROCEDURE_OWNER, PROCEDURE_NAME и COLUMNJYPE.

Аргументы owner, ргос и column могут содержать шаблоны («%» заменяет ноль и более символов, а «_» — один символ).

odbc_specialcolumns

Получение списка специальных полей

int odbc_specialcolumns (int connectionjd, int type. string qualifier, string owner, string table, int scope, int nullable)

Если в аргументе type указано значение SQL_BEST_ROWID, возвращаются поля, уникально идентифицирующие каждую запись в таблице.

Если в аргументе type указано значение SQLJ!OWVER, возвращаются оптимальные ноля, извлекая значения которых, можно уникально идентифицировать любую запись указанной таблицы (вне зависимости от изменений, производимых в таблице).

Поля возвращаются в наборе записей (сортируемом по полю SCOPE), содержащем следующие ноля:

  • SCOPE;
  • COLUMN_NAME;
  • DATAJYPE;
  • TYPE_NAME;
  • PRECISION;
  • LENGTH;
  • SCALE;
  • PSEUDO_COLUMN.

MySQL

Эти функции позволяют работать с серверами БД MySQL.

См. также документацию но адресу: http://www.mysql.com/documentation/.

mysql_connect

Подключение к серверу MySQL

int mysql_connect ([string hostname[:port][:/path/to/socket] [, string username [, string password]]])

Возвращает дескриптор подключения к БД или FALSE — при ошибке. Обычно следующим шагом янляется выбор БД на сервере функцией mysql_selectjJb().

Для неуказанных аргументов используются следующие умолчания: host:port = 'localhost:3306', username = имя пользователя запустившего текущий процесс сервера password = ""; либо значения из файла конфигурации.

Строка hostname может также включать номер порта (в виде "hostname: port") или путь к соксту для локальной машины в системах Unix":/path/to/socket".

При ошибке также выдается предупреждение. Выдачу предуиреждения можно блокировать, указав перед именем функции оператор «@».

Если функция повторно вызывается с теми же аргументами, новое подключение не создается, а возвращается идентификатор имеющегося.

В конце сценария принято закрывать подключение функцией mysql_ close(), но это можно не делать, поскольку РHР автоматически закрывает все (неустойчивые) подключения при завершении сценария.

<?php
Slink = @mysql_connect ("serve"", "user", "passed")
or die ("Невозможно подключиться");
print ("Подключение к MySQL успешно"):
mysql_close ($link); ?>

См. также: mysql_pconnect() и mysql_close().

mysql_pconnect

Создание устойчивого подключения к серверу MySQL

int mysql pconnect ([string hostname[ port][:/path/to/socket] [, string username [, string password]]])

Возвращает дескриптор подключения к БД или FALSE — при ошибке (также выдается предупреждение). Обычно следующим шагом является выбор БД на сервере функцией mysql_select_db().

Для неуказанных аргументов используются следующие умолчания: host:port = 'localhost:3306', username = имя пользователя запустившего текущий процесс сервера password = ""; либо значения из файла конфигурации.

Строка hostname может также включать номер порта (в виде "hostname: port") или путь к соксту для локальной машины в системах Unix ":/path/to/socket".

mysql_pconnect() действует подобно mysql_connect() с двумя отличиями.

  • Перед подключением функция пытается проверить, имеется ли уже открытое (устойчивое) подключение с параметрами (имя сервера, пользователя и пароль), аналогичными указанным. Если такое подключение обнаруживается, то возвращается его идентификатор вместо создания нового подключения.
  • При завершении сценария подключение не закрывается, а остается действительным для дальнейшего использования. (Функция mysql_ close() не может закрыть подключения, созданные с помощыо mysql_pconnect()).

mysql_close

Отключение от сервера MySQL

int mysql_close ([int 1ink_identifier]) :

Возвращает TRUE или FALSE - при ошибке.

Идентификатор закрываемого подключения указывается в аргументе; если его не указывать, то закрывается последнее открытое данным сценарием подключение.

Фактически использование данной функции не является обязательным, так как РНР автоматически закрывает все незакрытые неустойчивые подключения при завершении сценария.

Заметьте: устойчивые подключения, созданные функцией mysql_ pconnect(), не закрываются.

См. также: mysql_connect() и mysql pconnect().

tmysql_change_user

Изменение параметров подключения int mysql_change_user (string user, string password [. string database [, int linkjidentifier]])

Если не указываются БД или подключение, то используется последняя активная БД. Если авторизация проходит безуспешно, параметры подключения не изменяются.

Работает с MySQL 3.23.3 и выше.

mysq_l list_dbs

Получение списка БД на сервере MySQL

int mysql_list_dbs ([int link_identifier])

Возвращает набор записей, содержащий список БД на сервере.

Slink = mysql_connect
('localhost'. 'myname'. 'secret').
$db_list = mysqljist_dbs($link)
while ($row = mysql_fetch_object
($db_list)) { echo $row->Database .
"\n": }

В данном примере также может использоваться функция mysql_ fetch_row() или ей подобная.

Заметьте: список можно получить, не имея привилегий, то есть не указывая пароль доступа.

Ранее функция называлась mysq'Mistdbs().

mysql_db_name

Получение имени БД из списка

int mysql_db_name (int result, int row [, mixed field])

В аргументе result указывается дескриптор набора записей, полученный от функции mysql_list_dbs(). В аргументе row указывается номер записи. При ошибке возвращает FALSE. Фактически данная функция является излишней.

<?php error_reportirg(E_ALL);
mysq]_connect('dbhost'. 'username'. 'password').
Sdbjist = mysql Jist_dbs():
for ($1 = 0. $1 < ($cnt= mysql_num_rows($cibjist)),
$1 + 1-)
{ echo mysql_db_name($db_list. $i) .
"\n"; } ?>

Ранее функция называлась mysql_dbname().

mysql_select_db

Выбор БД MySQL

int mysql_select_db (string database_name [, int link_identifier])

Возвращает TRUE или FALSE — при ошибке.

Устанавливает БД с именем database_name, активной для текущего или указанного в link_identifier подключения. Если подключений не имеется, то косвенно вызывается функция mysql_connect() с параметрами по умолчанию.

Последующие запросы, выполняемые функцией, будут адресованы данной БД.

См. также: mysql_connect(), mysqlj>connect() и mysql_query().

Ранее функция называлась mysql_selectdb().

mysql_create_db

Создание БД MySQL

int mysql_create_db (string dbnarae [, int link_identifier])

Создаст БД dbname, используя подключение link_identifier.

<?php /
Slink = mysql_pconnect
("localhost". "me", "paswd"): /
if (mysql_create_db ("my_db"))
{ print ("БД создана \n");
} else {
printf ("Ошибка: Xs\n". mysql_error
()). } ?>

Ранее функция называлась mysql_createdb().

См. также mysql_drop_db().

mysql_drop_db

Удаление БД

int mysql_drop_db (string databasejname [, int link_identifier])

Возвращает TRUE, если БД databasejiame успешно удалена, или FALSE — при ошибке.

См. также mysql_create_db().

Ранее функция называлась mysql_dropdb().

mysql_ list_tables

Получение списка таблиц в БД

int mysql_list_tables (string database [. int linkjidentifier])

Возвращает набор записей, из которого можно извлечь имена таблиц функцией mysql_tablename(). Следующий пример распечатывает имена всех БД и таблиц, в них содержащихся.

<?
Slink = mysql_connect
('127 0.0 Г. 'root1. '157984').
Sdbjist = mysql_list_dbs($link).
while ($r_db = mysql_fetch_object(SdbJisU)
{ echo $r_db->Database . "\n":
// распечатать список таблиц Stbljist =
mysql_lTst_tables(Sr_db->Database):
for($i =0: $i < mysql_num_rows
($tbl_list): Si++) {
echo " - ". mysql_tablename
($tbl_list. $1). "\n": } ?>

Ранее функция называлась mysql_listtables().

mysql_tablename

Получение имени таблицы

string mysql_tablename (int result, int i)

Функция используется для получения имени таблицы (с номером i) из набора записей, возвращенного функцией mysql_list_tables().

<?php
mysql_connect ("localhost:3306"):
Sresult = mysql_list_tables ("mydb"):
$1 = 0; while
(Si < mysql_num_rows
(Sresult)) { $tb_names[$i] =
mysql_tablename (Sresult. Si):
echo Stb_names[Si] . "<BR>";
$l++; } ?>

mysql_query

Выполнение запроса к БД

int mysql_query (string query [, int linkjdentifier])

Посылает запрос текущей БД, активной для текущего подключения или указанного в link_identifier. Если подключений не имеется, то косвенно вызывается функция mysql_connect() с параметрами по умолчанию.

Заметьте: SQL-выражение, указанное в аргументе query, не должно оканчиваться точкой с запятой. Если выражение содержит ошибки

или при его выполнении возникают ошибки (например, если текущие привилегии не позволяют выполнить запрос), то функция возвращает FALSE.

Если запрос успешно выполнился, то возвращается набор записей (не забывайте, он также может содержать 0 записей), который может быть обработан функциями:

  • mysql_resul t() — получить элемент набора записей;
  • mysql_fetch_array() — занести запись в массив;
  • mysql_fetch_row() — занести запись в нумерованный массив;
  • mysql_fetch_assoc() — занести запись в ассоциативный массив;
  • mysql_fetch_object() — занести запись в объект.

Чтобы выяснить, сколько записей было возвращено командой SELECT, используйте функцию mysql_num_rows(); а чтобы выяснить, сколько записей было изменено в результате выполнения запросов DELETE, INSERT, REPLACE или UPDATE, используйте функцию mysql_affected_rows().

После обработки результатов запроса он может быть удален функцией mysql_free_result(). Хотя в этом ист необходимости, так как ресурсы автоматически освобождаются при завершении сценария.

См. также: mysql_db_query(), mysql_select_db() и raysql_connect().

mysql_db_query

Выполнение запроса к указанной БД

int mysql_db_query (string database, string query [, int linkjdentifier])

Функция эквивалентна последовательному выполнению функций:

mysql_select_db (string database [. int linkjdentifier]); mysql_query (string query [. int link_identifier]};

См. также: mysql_db_query(), mysql_connect(). Ранее функция называлась mysql().

mysql_num_rows

Получение числа возвращенных записей

int mysql_num_rows (int result)

Функция возвращает число записей, возвращенных командами SELECT. Чтобы выяснить, сколько записей было изменено в результате выполнения запросов DELETE, INSERT, REPLACE или UPDATE, используйте функцию mysql_affected_rows().

<?php
Sconn = mysql_connec
t("hostaddress". "username". "password");
mysql_select_db("database".Sconn):
$rs = mysql_query("SELECT
FROM Accounts".$conn);
$N = mysql num_rows($rs),
echo "Всего записей: $N". ?>

См. также: mysql_db_query(), mysql_query() и mysql_fetch_row().

Ранее функция называлась mysql_numrows().

mysql_affected_rows

Получение числа измененных записей в БД

int mysql_affected_rows ([int link_iidentifier])

Возвращается число записей, измененных в результате выполнения запросов DELETE, INSERT, REPLACE или UPDATE.

Если последним запросом была команда DELETE без ограничения WHERE, то из таблицы будут удалены все записи, но эта функция возвратит 0.

Чтобы выяснить, сколько записей было возвращено командой SELECT, используйте функцию mysql_num_rows().

mysql_insert_id

Получение значения последнего автоинкремента

int mysqi_insert_id ([int link_identifier])

При добавлении записей в таблицу командой INSERT для поля, имеющего свойство AUTO_INCREMENT, значение генерируется автоматически (вне зависимости от того, было ли оно задано) и его можно получить с помощью этой функции. Это значение можно использовать для модификации последней добавленной записи.

Это значение также можно получить с помощью SQL запроса MySQL: "SELECT LASTJNSERTJDO".

Если последним запросом значение AUTO_INCREMENT сгенерировано не было, то функция возвратит 0. Заметьте также, что если тип автоин-крементируемого поля был BIGINT, то он будет преобразован к типу LONG, и результат может быть неверным.

Команда LAST_INSERT_ID() имеет два преимущества: она всегда хранит значение последнего автоинкремента (это значение не сбрасывается в 0 между запросами) и она всегда возвращает правильное значение.

mysql_data_seek

Перемещение курсора набора записей

int mysql_data_seek (int result_identifier, int rowjiumber)

При каждом вызове функции mysql_fetch_row() (или подобной ей) внутренний курсор записи смешается на следующую запись. Данная функция позволяет свободно перемещать курсор в наборе записей result_identifier, так, чтобы он указывал на запись с номером row_ number (нумерация начинается с 0).

Функция возвращает TRUE или FALSE — при ошибке.

<?php
Slink = mysql_pconnect
("сервер", "имя", "пароль")
or die ("Нет коннекта"):
mysql_select_db ("samp_db")
or die ("Базу не выбрать").
Squery = "SLLtCT lastjname. firstjname
FROM friends";
$result = mysql_query i$query)
or die ("Query failed").
# отобразить записи в обратном порядке
for ($i = mysql_num_rows ($re.sult) - 1
: $1 >=0; $1--) { if (!mysql_data_seek
(Sresult. $1)) {
printf ("Cannot seek to row 5!d\n". $1);
continue: )
if(!($row = mysql_fetch_object (SresulL)))
continue.
pnntf ("Is s<BR>\n". $row->labt_name.
$row->first_name): }
mysql free_result (Sresult). ?>

mysql_free_result

Уничтожение набора записей

int mysql_free_result (int result)

Функция освобождает память, занимаемую набором записей result, возвращенным запросом. Ее следует использовать только в том случае, если приходится очень экономить память, так как память автоматически освобождается при завершении сценария.

Ранее функция называлась mysql_freeresult().

Обработка результатов запроса

mysql_result

Получение определенного элемента набора записей

mixed mysql_result (int result, int row [, mixed field])

Возвращает содержимое ячейки из набора записей resul t. В аргументе row указывается номер записи (нумерация начинается с 0), в аргументе field можно указать индекс поля (число), имя поля или полное имя поля (вида: «имя_таблицы.имя_поля») или псевдоним поля (для запросов типа 'SELECT foo AS bar FROM...').

При работе с большими наборами записей быстрее выполняются функции типа _fetch_ (см. ниже). Также заметьте, что численные индексы обрабатываются быстрее строковых.

Не следует вызывать функцию mysql_result() в сочетании с другими функциями обработки набора записей.

Рекомендуется использовать альтернативные функции: mysql_fetch_ row(), mysql_fetch_array() и mysql_fetch_object().

mysql_fetch array

Занесение записи в массив

array mysql_fetch_array (int result [, int result_type])

Возвращает массив, соответствующий текущей записи, из набора записей result, возвращенных запросом, или FALSE, если записей более не имеется.

Данная функция является расширением функции mysql_fetch_row(), и она может возвращать нумерованный или ассоциативный массив (а также объединенный). Вид возвращаемого массива может указываться в аргументе result_type одной из констант: MYSQL NUM, MYSQL_ ASSOC, MYSQL_BOTH (по умолчанию).

В ассоциативных массивах индексами служат имена нолей. Если имеются одноименные поля, используется последнее. Для доступа к одноименным полям также можно использовать числовые индексы (поля нумеруются в той последовательности, в которой указаны в запросе или в таблице) или псевдонимы.

SELECT tl.fl AS tl_fl t2.fi AS t2_fl FROM tl. t2

Заметьте, что функция работает лишь немного медленнее, чем mysql_ fetch_row(), но предоставляет дополнительную функциональность.

<?php
mysql_connect (Shost. $use<\ Spassword).
Sresult = mysql_db_query ("database".
"select user_id. full name from tbl");
while ($row = mysql_fetch_array (Sresult))
{ echo "userjid- ".$row["user_id"].
"<brn". echo "user_id: ".$row[0] "<br>\n";
echo "fullname: ",$row["fullnatne"]."<br>\n";
echo "fullname: ".$row[l]."<br>\n"; }
mysql_free_result (Sresult). ?>

См. также: mysql_fetch_row() и mysql_fetch_assoc().

mysql_fetch_row

Занесение записи в нумерованный массив

array mysql_fetch_row (int result)

Возвращает массив, соответствующий текущей записи, из набора записей result, возвращенных запросом (последующий вызов функции возвращает следующую запись), или FALSE, если записей более не имеется.

Каждое поле записи сохраняется в нумерованном элементе массива (нумерация начинается с 0).

См. также: mysql_fetch_array(), mysql_fetch_object(), mysql_data_seek(), mysql_fetch_lengths() и mysql_result().

mysql_fetch_assoc

Занесение записи в ассоциативный массив

array mysql_fetch_assoc (int result)

Возвращает массив, соответствующий текущей записи, из набора записей result, возвращенных запросом, или FALSE, если записей более не имеется. Вызов функции эквивалентен mysql_fetch_array (result, MYSQL_ASSOC).

В возвращаемом массиве индексами служат имена полей. Если имеются одноименные поля, используется последнее. Для доступа к остальным одноименным полям можно использовать псевдонимы или функцию raysql_fetch_array().

Заметьте, что функция работает лишь немного медленнее, чем mysql_ fetch_row(), но предоставляет дополнительную функциональность.

<?php
mysql_connect ($host. $user. Spassword):
$result = mysql_db_query
("database"."select * from table").
while ($row = mysql_fetch_assoc
(Sresult)) { echo $row["user_id"];
echo $ro\4' fullname"] }
mysql_free_result (Sresult); ?>

CM. также: mysql_fetch_row() и mysql_fetch_array().

mysql_fetch_object

Получение записи в свойствах объекта object mysql_fetch_object (int result)

Возвращает объект, в свойствах которого находятся поля текущей записи, или FALSE, если записей более не имеется.

По скорости выполнения функция идентична mysql_fetch_array() и почти идентична mysql_fetch_row().

<?php
mysql_connect ($host. $user. $password).
Sresult = mysql_db_query
("database", "select * from table"):
while ($row = mysql_fetch_object
(Sresult)) {
echo $row->user_id.
echo $row->fullname: }
mysql_free_result (Sresult): ?>

См. также: mysql_fetch_array() и mysql_fetch_row().

ImysqI_fetch_lengths

Получение длины элементов записи array mysql_fetch_lengths (int result) После того как запись была обработана одной из функций: mysql_ fetch_row(), mysql_fetch_array() или mysql_fetch_object(), с помощью данной функции можно узнать размер полученного значения в каждом обработанном поле.

Например, в следующем фрагменте:

Srs_arr = mysql_fetch_row($rs):
S'-sJen - mysql_fetch_lengths($rs).

массив $rs_len будет содержать длину соответствующих элементов массива $rs_arr, то есть $rsjen[0] = strlen($rs_arr[0]) и т. д.

См. также mysql_fetch_row().

mysql_fetch_field

Получение информации о поле записи в свойствах объекта

object mysql_fetch_field (Int result [, int field_offset])

Если номер поля field_offset не указан, при каждом вызове функции возвращаются свойства следующего поля из набора записей result.

Возвращаемый объект имеет следующие свойства (и содержит информацию):

  • name — имя поля;
  • table — имя таблицы, которой принадлежит поле;
  • raax_length — максимальная длина поля;
  • not_null — 1, если полю разрешено пустое значение;
  • primary_key — 1, если поле является ключевым (primary key);
  • unique_key — , если в ноле допускаются только уникальные значения (unique key);
  • multiple_key — 1, если в поле допустимо иметь повторяющиеся значения;
  • numeric — 1, если поле числовое;
  • blob — 1, если поле имеет тип BLOB;
  • type — чип поля;
  • unsigned — 1, если поле числовое беззнаковое;
  • zerofill — 1, если поле заполняется нулями (zero-filled).

<?php /
mysql_connect (Shost. $user. Spassword)
or die ("Could not connect"):
\ $result = mysql_db_query
("database", "select * from table")
or die ("Query failed"): \ \
for($i =0: $1 < mysqljium_fields
(Sresult): $i++)
{ echo "Метаданные поля $i:<BR>\n":
$meta = mysql_fetch_field
(Sresult): if (!$meta) { echo
"No information available<BR>\n";
echo "<PRE> name $meta->
name table- $meta->table
type: $meta->type
roax_length: $meta->
max_length notjiull
$meta->not_pull
zerofill. $meta->zerof ill
umque_key. $meta->umque_key
pnmary_key: $meta->prTinary_key
|4ultiple_key $meta->multiple_key
numeric $meta->numeric
unsigned $meta->unsigned
blob $meta->blob </PRE>". }
mysql_free_result (Sresult): ?>

См. также mysql_field_seek().

mysql_field_seek

Перемещение к указанному полю

int mysql_field_seek (int result, int field_offset)

Функция является излишней, и следующие фрагменты эквивалентны:

$meta = mysql_fetch_field
(Sresult. field_offset): и mysql_fTeld_seek
(Sresult. field_offset)
imeta - mysql_fetch_field ($result).

Эта функция влияет только на mysql_fetch_field(), а остальные функции этого рода (см. ниже) требуют явного указания номера поля.

См. также mysql_fetch_field().

mysql_field_name

Получение имени поля в наборе записей

string mysql_field_name (int result, int fie!d_index)

Функция возвращает имя поля с индексом field_offset (нумерация начинается с 0) в наборе записей result.

$res = !nysql_db_query
( "users", "SELECT user_id. user-name
FROM users"):
echo mysql_field_name($res. !)
// выведет username

Ранее функция называлась mysql_fieldname().

mysql_field_table

Получение имени таблицы, которой принадлежит поле из набора записей string mysql_field_table (int result, int field_offset) Ранее функция называлась mysqljfieldtable().

mysql_field_len

Получение размера поля набора записей

int mysql_field_len (int result, int field_offset)

Ранее функция называлась mysql_fieldlen().

mysql_field_type

Получение типа поля набора записей

string mysql _field_type (int result, int field_offset) Возвращаемая строка содержит название типа ноля: «int», «real», «string», «blob» или другого, описанного в документации по MySQL.

<?php
mysql_ccnnect (" local host.3306").
mysql_select_db ("mydbl"):
$result = mysql_query ("SELECT * FROM tbll");
Sfields = mysql_num_fields (Sresult):
Srows mysql nurn_rows ($result);
Si = 0;
Stable = mysql_field_table
(Sresult. $1).
echo "Таблица 'Stable' имеет
Sfields полей и Srows записей<ВК>":
echo "Структура таблицы: <BR>":
while ($1 < Sfields) {
Stype = mysql_field_type
(Sresult. Si):
$name = mysql_field_name
(Sresult. Si):
Slen = mysql_field_len
(Sresult. Si):
Sflags - mysql_field_flags
(Sresult. Si):
echo Stype." ".$name." ".Slen."
".Sflags."
<BR>": Si++: mysql_close(): ?>

Ранее функция называлась mysql_fieldtype().

mysql_field_flags

Получение флагов поля записи

string mysql_field_flags (int result, int field_offset)

Поля записей в MySQL могут иметь следующие свойства-флаги: "notjiull", "pr1mary_key", "unique_key", "multiple_key", "blob", "unsigned", "zerofill", "binary", "enum", "auto_increment", "timestamp".

Функция возвращает перечисление через пробел флагов, имеющихся у поля с индексом field_offset (нумерация начинается с 0) в наборе записей result (разделить полученную строку на составляющие можно функцией exptode()).

Ранее функция называлась mysql_fieldflags().

mysql_list_fields

Получение списка полей таблицы

int mysql_list_fields (string database_name, string table_name [, int linkjidentifier])

Функция возвращает пустой набор записей таблицы table_name из БД database_name, который можно использовать для получения информации о всех полях, имеющихся в таблице, с помощью функций

mysql_fetch_field(), mysql_field_flags(), mysql_fieldjen(), mysql_field_ name() и mysql_field_type().

Заметьте: при ошибке возвращается -1, а в переменной Sphperrmsg сохраняется сообщение об ошибке и (если функция не была вызвана с оператором @) распечатывается сообщение об ошибке.

$link = mysql_cornect
('localhost'. 'myname'. 'secret');
Sfields = mysql_list_fields
("databasel", "tablel", $link):
Scolumns = mysql_num_fields($fields);
// число полей в таблице
// распечатать имена всех полей
таблицы for ($1 = 0: $1 < Scolumns; $i++)
{
echo mysql_field_name
($fields. $1) . "\n".; }

Ранее функция называлась mysql_listfields().

mysql_num_fields

Получение числа полей в наборе записей

int mysq"ljium_fields (int result)

См. также: mysql_db_query(), mysql_query(), mysql_fetch_field(), mysql_ num_rows().

Ранее функция называлась mysqljiumfields().

mysql_errno

Получение кода ошибки MySQL

int mysql_errno ([int link_identifier])

Возвращает номер ошибки, произошедшей в ходе выполнения последней функции MySQL, или 0, если ошибки не произошло.

Ранее ошибки, происходящие при операциях с MySQL, выдавались в виде предупреждений, но сейчас возникновение ошибок нужно выявлять самостоятельно.

Предупреждения выводятся только при неудачных подключениях или при попытке использования несуществующего ресурса (например, набора записей).

<?php
mysql_connect();
mysql_select_db("non_exi stent_db"):
echo mysql_errno().":
".mysql_error()."<BR>"
mysql_query("SELECT *
FROM non_existent_table"):
echo mysql_errno() ";
".mysql_error().
"<BR>"; ?>

См. также mysql_error().

mysql_error

Получение сообщения об ошибке MySQL

string mysql_error ([int link_identifier])

Возвращает сообщение об ошибке, произошедшей в ходе выполнения последней функции MySQL, или пустую строку, если ошибки не произошло.

<?php
mysql_ccnnect().
mysql_select_db("non_existent_db");
echo mysql_errno().":
" mysql_error() "<BR>".
$conn = mysql_query("SELECT *
FROM non_exibtent_table");
echo mysql_errno() ": ",mysql_error()
"<BR>"; ?>

См. также mysql_errno().

mSQL

Данная группа функций позволяет работать с серверами БД mSQL. Для того чтобы их можно было использовать, РНР нужно скомпилировать с параметром —with-msql[=dir], где можно указать каталог размещения mSQL (по умолчанию это /usr/local/Hughes).

Документацию но mSQL можно найти по адресу http://www.hughes. \ com.au/.

msql_connect

Подключение к серверу mSQL

int msql_connect ([string hostname [, string hostname[:port] [, string user-name [, string passworo>]

Возвращает дескриптор подключения к БД или FALSE — при ошибке.

Если не указывается имя хоста, то производится локальное подключение.

Если функция повторно вызывается с теми же аргументами, новое подключение не создается, а возвращается идентификатор уже имеющегося.

В конце сценария принято закрывать подключение функцией msql_ close(), но этого можно и не делать, поскольку РНР автоматически закрывает все (неустойчивые) подключения при завершении сценария.

См. также: msql_pconnect(), msql_close().

msql_pconnect

Создание устойчивого подключения к серверу mSQL

int msqlj>connect ([string hostname [, string hostname[:port] [, string username [, string password>)

Возвращает дескриптор подключения к БД или FALSE — при ошибке. msql_pconnect() действует подобно msql_connect() с двумя отличиями:

Перед подключением функция пытается проверить, имеется ли уже открытое (устойчивое) подключение с параметрами (имя сервера, пользователя и пароль), аналогичными указанным. Если такое подключение обнаруживается, то возвращается его идентификатор вместо создания нового подключения.

При завершении сценария подключение не закрывается, а остается действительным для дальнейшего использования. (Функция msql_ close() не может закрыть подключения, созданные с помощью msql_ pconnect().)

msql_close

Отключение от сервера mSQL int msq]_close (int link_identifier)

Возвращает TRUE или FALSE — при ошибке.

Идентификатор закрываемого подключения указывается в аргументе link_identifier; если его не указывать, то закрывается последнее открытое данным сценарием подключение.

Фактически использование данной функции не является обязательным, так как РНР автоматически закрывает все незакрытые неустойчивые подключения при завершении сценария.

Обратите внимание, что устойчивые подключения, созданные функцией msql_pconnect(), не закрываются.

См. также: msql_connect() и msql_pconnect().

msql_list_dbs

Получение списка БД на сервере mSQL

int msq"Mist_dbs(void);

Возвращает набор записей, содержащий список имеющихся БД на сервере. Используйте функцию msql_dbname(), чтобы получить элементы этого списка.

msql_dbname

Получение имени БД mSQL

string msql_dbname (int query_identifier. int i)

Функция используется для обработки набора записей query_identifier, возвращенного msqlJIistdbs(); в аргументе указывается номер записи. Возвращается имя БД или FALSE — при ошибке.

Число записей можно определить функцией msql_numrows().

msql_create_db

Создание БД mSQL

int msql_create_db (string database name [, int link_identifier])

Создает БД dbname, используя подключение link_identifier.

Функция имеет синоним msql_createdb().

См. также msql_drop_db().

msql_drop_db

Удаление БД mSQL

int msql_drop_db (string database_name, int link identifier)

Возвращает TRUE, если БД databasejiame успешно удалена, или FALSE при ошибке.

Функция имеет синоним msql_dropdb().

См. также msql_create_db().

msql_list_tables

Получение списка таблиц в БД

int msql_list_tables (string database)

Возвращает набор записей, содержащий список БД на сервере. Для извлечения отдельных записей используется функция msql_tablename().

msql_tablename

Получение имени таблицы

string msql_tablename (int query_identifier, int i)

Функция используется для получения имени таблицы (с номером ) из набора записей query_identifier, возвращенного функцией mysql_ Hst_tables().

<?php
msql_connect ("localhost")
$result = msql_list_tables ("myDB"):
$1 = 0.
while ($1 < msqljiumrovvs
($result)) {
$tb_names[$i] =
msql_tablename (Sresult. $i):
echo $tb_names[$i] .
"<BR>":1T++; } ?>

msql_select_db

Выбор БД mSQL

int msql_selectjjb (string database_name, int linkjdentifier) Возвращает TRUE или FALSE - при ошибке.

Делает БД с именем databasejiame активной для текущего подключения или указанного в linkjdentifier. Если подключений не имеется, то косвенно вызывается функция mysql_connect() с параметрами по умолчанию.

Последующие запросы, выполняемые функцией, будут адресованы данной БД.

Функция имеет синоним msql_selectdb().

См. также: msql_connect(), msql_pconnect() и msql_query().

msql_regcase

Создание регулярного выражения для поиска, нечувствительного к регистру

См. также: sql_regcase().

msql_query

Выполнение запроса к БД

int rasql_query (string query, [int linkjdentifier]).

Посылает запрос текущей БД, активной для текущего подключения или указанного в linkjdentifier. Если подключений не имеется, то косвенно вызывается функция msql_connect() с параметрами по умолчанию.

Если выражение содержит ошибки или при его выполнении возникают ошибки (например, если текущие привилегии не позволяют выполнить запрос), то функция возвращает FALSE. Если запрос успешно выполнился, то возвращается набор записей (не забывайте, Он также может содержать 0 записей), который может быть обработан функциями:

  • msql_result() — получить элемент набора записей:
  • msqljretch_array() - занести запись в массив;
  • msql _fetdn_ra* () - занести запись в нумерованный массив;
  • msql_fetch_object() - занести запись в объект.

Чтобы выяснить, сколько записей было возвращено командой SELECT,

используйте функцию msql_num_rows(); а чтобы выяснить, сколько описей было изменено в результате выполнения запросов DELETE, PLACE или UPDATE, используйте функцию msql_affected_rows().

После обработки результатов запроса он может быть удален функцией mysql_free_result().

См. также: rasq(), msql_select_db() и msql_connect().

msql

Выполнение запроса к указанной БД

int msql (string database, string query, int link_identifier)

Функция подобна msql_query() с тем отличием, что БД database, которой посылается запрос, здесь указывается явно.

msql_num_rows

Получение числа возвращенных записей

int msql_num_rows (int queryjidentifier)

Функция возвращает число записей, возвращенных запросом.

См. также: msql(), msql_query() и msql_fetch_row().

msql_affected_rows

Получение числа измененных записей в БД

int msql_affected_rows (int query_identifier)

Функция возвращает число записей, которых «коснулся» запрос (при выборке, удалении, обновлении).

См. также msql query().

msql_result

Получение элемента набора записей

int msql_result (int query_identifier, int row, mixed field)

Возвращает содержимое ячейки из набора записей query_identifier. В аргументе row указывается номер записи (нумерация начинается с 0), в аргументе field можно указать индекс поля (число), имя поля, полное имя поля (вида: «имя_таблицы.имя_поля») или псевдоним поля.

При работе с большими наборами записей быстрее выполняются функции типа _fetch_ (см. ниже). Также заметьте, что численные индексы обрабатываются быстрее строковых.

Не следует вызывать функцию msql_result() в сочетании с другими функциями обработки набора записей.

Рекомендуется использовать альтернативные функции: msql_fetch_ row(), msql_fetch_array() и msql_fetch_object().

msql_data_seek

Перемещение курсора набора записей

int msql_data_seek (int query_identifier. int rowjnumber)

При каждом вызове функции msql_fetch_row() (или подобной ей) внутренний курсор записи смещается на следующую запись. Данная функция позволяет свободно переметать курсор в наборе записей query_identifier так, чтобы он указывал на запись с номером row_ number (нумерация начинается с 0).

Функция возвращает TRUE пли FALSE — при ошибке.

См. также msql_fetch_row().

msql_fetch_array

Занесение записи в массив

int msql_fetch_array (int query_identifier [, int result_type])

Возвращает соответствующий текущей записи массив из набора записей query_identifier, возвращенных запросом, или FALSE, если записей более не имеется.

Данная функция является расширением функции msql_fetch_row(); она может возвращать нумерованный или ассоциативный массив (или объединенный). Вид возвращаемого массива может указываться в аргументе resultjtype одной из констант: MYSQL_NUM, MYSQL_ASSOC, MYSQL_BOTH (по умолчанию).

В ассоциативных массивах индексами служат имена нолей. Если имеются одноименные поля, используется последнее. Для доступа к одноименным полям также можно использовать числовые индек-т сы (поля нумеруются в той последовательности, в которой указаны в запросе или в таблице) или псевдонимы.

Заметьте, что функция работает лишь немного медленнее, чем mysql_ fetch_row(), но предоставляет дополнительную функциональность.

Будьте внимательны с обработкой записей, которые содержат единственное поле, имеющее значение 0 (или пустую строку, или NULL).

См. также msql_fetch_row().

msql_fetch_row

Занесение записи в нумерованный массив

array msql_fetch_row (int query_identifier)

Возвращает соответствующий текущей записи массив из набора записей query_identifier, возвращенных запросом (последующий вызов функции возвращает следующую запись), или FALSE, если записей более не имеется.

Каждое поле записи сохраняется в нумерованном элементе массива (нумерация начинается с 0).

См. также: msql_fetch_array(), msq()_fetch_object(), msql_data_seek() и msql_result().

msql_fetch_object

Получение записи в свойствах объекта

int msql_fetch_object (int query_identifier [, int resul t_type])

Возвращает объект, в свойствах которого находятся поля текущей записи, или FALSE, если записей более не имеется.

По скорости выполнения функция идентична mysql_fetch_array() и почти идентична mysql_fetch_row().

См. также: msql_fetch_array() и msq"l_fetch_row().

msql_fetch_field

Получение информации о поле записи в свойствах объекта

object msql_fetch_field (int query_identifier, Int field_offset)

Если номер поля fi el d_offset не указан, при каждом вызове функции возвращаются свойства следующего поля из набора записей query_ identifier.

Возвращаемый объект имеет следующие свойства (и содержит информацию):

  • name — имя поля;
  • table — имя таблицы, которой принадлежит поле;
  • notjiull — 1, если полю разрешено пустое значение;
  • primary_key — 1, если поле является ключевым;
  • unique_key -- 1, если в поле допускаются только уникальные значения;
  • type — тип поля.

См. также msql_field_seek().

msql_field_seek

Перемещение к указанному полю

int msql_field_seek (int query_identifier, int field_offset)

Последующий вызов msql_fetch_field() (если в нем не указан номер поля) будет возвращать информацию о поле с указанным номером field_offset.

См. также msql_fetch_field().

msql_fieldname

Получение имени поля в наборе записей

string msql_fieldname (int query_identifier, int field)

Функция возвращает имя ноля с индексом field в наборе записей query_identifier.

msql_fieldtable

Получение имени таблицы, которой принадлежит поле из набора записей

int msql_fieldtable (int query_identifier, int field)

msql_fieldtype

Получение типа поля набора записей

string rasql_fieldtype (int query_identifier, int i)

Возвращаемая строка содержит название тина поля: «int», «real», «string», «blob» или другого, описанного в документации.

msql_fieldflags

Получение флага поля записи

string msql_fieldflags (int query_identifier, int i)

Поля записей в mSQL Moiyr иметь два флага: «notjiull», «primary_key».

Функция возвращает перечисление через пробел флагов, имеющихся у поля с индексом i (нумерация начинается с 0) в наборе записей query_identifier (разделить полученную строку на составляющие можj но функцией explode()).

Если поле флагов не имеет, возвращается пустая строка.

msql_fieldlen

Получение размера поля набора записей

int msql_fieldlen (int query_identifier, int i)

msql_free_result

Уничтожение набора записей

int msql_free_result (int query_identifier)

Функция освобождает память, занимаемую набором записей query_ identifier, возвращенным запросом.

msql_fist fields

Получение перечисления полей в результате запроса

int msql_list_fields (string database, string tablename)

Функция возвращает пустой набор записей таблицы tablename из БД database, который можно использовать для получения информации о всех полях, имеющихся в таблице, с помощью функций: msql_ fetch_field(), msql_field_flags(), mysql_field_len(), mysql_field_name() и mysql_field_type().

Заметьте: при ошибке возвращается -1, а в переменной Sphperrmsg сохраняется сообщение об ошибке и (если функция не была вызвана с оператором «@») распечатывается сообщение об ошибке.

См. также msql_error().

msql_num_fields

Получение числа полей в наборе записей

int msql_num_fields (int queryjidentifier)

См. также: msq(), msqljjuery(), msql_fetch_field() и msql_num_rows().

Ранее функция называлась msqljiumfields().

msql_error

Получение сообщения об ошибке последней функции msql

string_msql_error ()

Возвращает сообщение об ошибке, произошедшей в ходе выполнения последней функции mSQL, или пустую строку, если ошибки не произошло. Раисе ошибки, происходящие при операциях с MySQL, выдавались в виде предупреждений, но сейчас возникновение ошибок нужно выявлять самостоятельно.

PostgreSQL

Postgres, изначально разработанная в UC Berkeley Computer Science Department, явилась одной из первых БД, использующих объектно-реляционные принципы, доступные теперь в некоторых коммерческих БД. Она поддерживает язык SQL92/SQL3, транзакции и расширение типов. PostgreSQL распространяется бесплатно и с открытым кодом. См.: http://www.postgresql.org/.

Начиная с версии 6.3 (03/02/1998). PostgreSQL использует соксты unix-доменов (адрес сокета записывается в файл /tmp/.s.PGSQL5432). Чтобы к серверу можно было подключиться через TCP/IP, postmaster необходимо запускать с ключом -i (дословно означающим: "listen on TCP/IP sockets as well as Unix domain sockets").

Ранее в функции подключения параметры указывались в отдельных аргументах, но сейчас они заключаются в одну строку:

Scorn = pg_Connect
("host=myHost port=myPort tty=my
TTY opfons--myOptions user-myUser
password=myPassword dbname=myDB");

Для использования функций интерфейса больших объектов их необходимо помещать внутрь блоков транзакций. Блок транзакции начинается с команды begin и завершается командами commit или end. Отмена транзакций выполняется командами rollback или abort.

<?php
$database = pg_Connect
("dbname=jacarta");
pg_exec (Sdatabase, "begin"):
$oid = pgjocreate (Sdatabase):
echo ("$oid\n");
$handle = pg_loopen ($database, $01d. "w"):
echo ("$handle\n"): pgjownte (Shandle. "gaga"):
pg_loclose ($handle): pg_exec
($database. "commit"): ?>

pg_connect

Подключение к серверу PostgreSQL

int pg_connect (string conn_string)

Возвращает дескриптор подключения к БД (используемый последующими функциями) пли FALSE — при ошибке. В аргументе указываются параметры подключения: host, port, tty, options, user, password, dbname.

<?php
Sdbconn = pg_Connect
("dbname=mary");
Sdbconn2 = pg_Connect
("host=localhost port=5432 dbnamemary"):
$dbconn3 = pg_Connect
("user=mb password=baaaa dbname=mary "):
?>

Устаревший синтаксис:

Sconn = pg_connect
("host", "port", "options", "tty". "dbname").

См. также pg_pconnect().

pg_close

Закрытие подключения

bool pg_close (int connection)

Закрывает указанное подключение и возвращает TRUE (или FALSE при ошибке).

Фактически использование данной функции не является обязательным, так как РНР автоматически закрывает все незакрытые неустойчивые подключения при завершении сценария.

Заметьте, что устойчивые подключения, созданные функцией рд_ pconnect(), не закрываются.

pg_pconnect

Создание устойчивого подключения к серверу PostgreSQL

int pg_pconnect (string conn_string)

Возвращает дескриптор устойчивого подключения к БД (используемый последующими функциями) или FALSE — при ошибке. В аргументе указываются параметры подключения: host, port, tty, options, user, password, dbname.

Заметьте: устойчивые подключения не закрываются при завершении сценария и остаются действительными, пока РНР остается в памяти (так, что при повторной попытке создать идентичное устойчивое подключение используется уже имеющееся).

Устаревший синтаксис:

Sconn = pg_pconnect
("host", "port", "options", "tty". "dbname")

См. также pg_connect().

pg_host

Получение имени сервера, к которому осуществлено подключение

String pg_host (int connection_id)

Возвращает значение параметра host, указанного при подключении.

pg_port

Получение номера порта, используемого подключением int pg_port (int connectionjid)

Возвращает значение параметра port, указанного при подключении (или «5432»).

pg_tty

Получение имени терминала TTY, назначенного подключению string pgjtty (int connection_id)

Возвращает имя потока вывода, в который сервер записывает отладочную информацию для указанного подключения.

pg_options

Получение параметра подключения

string pg_options (int connection_id)

pg_dbname

Получение имени используемой БД

string pg_dbname (int connection) При ошибке возвращает FALSE.

pg_set_client_encoding

Установка кодировки, используемой клиентом

int pg_set_client_encoding ([int connection, string encoding])

Возвращает 0 или -1 — при ошибке, encoding может принимать значения: SQL_ASCII, EUC_JP, EUC_CN, EUC_KR, EUC_TW, UNICODE, MULE_INTERNAL, LATINX (X=l.. .9), KOI8, WIN, ALT, SJIS, BIGS, WIN1250.

Функция требует PostgreSQL 7.0 или старше.

Ранее функция называлась pg_setclientencoding().

См. также pg_client_encoding().

pg_client_encoding

Получение кодировки, используемой клиентом

string pg_client_encoding ([int connection])

Возвращается одно из значений: SQL_ASCII, EUC_JP, EUC_CN, EUC_KR, EUC_TW, UNICODE, MULEJNTERNAL, LATINX (X=l.. .9), KOI8, WIN, ALT, SJIS, 6165, WIN1250.

Функция требует PostgreSQL 7.0 или старше.

Ранее функция называлась pg_clientencoding().

См. также pg_set_client_encoding().

pg_trace

Разрешение трассировки подключения

bool pgjtrace (string filename [, string mode [, int connection]])

Функция разрешает автоматическую запись обмена сообщениями между сервером PostgreSQL и его клиентской частью в файл отладки filename. Чтобы использовать эту возможность, необходимо понимать внутренний протокол коммуникации PostgreSQL. В простейшем случае причины ошибок, записанные в этом файле, могут быть найдены с помощью команды: backend trace.log.

Аргументы filename и mode те же, что и в функции fopen() (mode no умолчанию: «w»), connection указывает, какое подключение следует трассировать (если не указано, то используется последнее открытое).

Возвращает TRUE, если filename успешно открыт, или FALSE — при ошибке.

См. также: fopen() и pg_untrace().

pg_untrace

Запрет трассировки подключения

bool pg_untrace ([int connection])

Останавливает отладку, начатую функцией pg_trace(). Аргумент connection указывает, какое подключение следует трассировать (если не указано, то используется последнее открытое). Всегда возвращает TRUE.

См. также pgjtrace().

pg_exec

Выполнение запроса

int pg_exec (int connection, string query)

Посылает запрос query для подключения connection.

Если при выполнении запроса возникают ошибки, то функция возвращает FALSE. Получить комментарий ошибки можно функцией рд_ errormessage().

Если запрос успешно выполнился, то возвращается набор записей, который может быть обработан функциями:

  • pg_result() — получить элемент набора записей;
  • pg_fetch_array() — занести запись в массив;
  • pg_fetch_row() — занести запись в нумерованный массив;
  • pg_fetch_object() — занести запись в объект.

Чтобы выяснить, сколько записей было возвращено командой SELECT, используйте функцию pg_num_rows(); а чтобы выяснить, сколько записей было изменено в результате выполнения запросов DELETE, INSERT, REPLACE или UPDATE, используйте функцию pg_cmdtuples().

После обработки результатов запроса он может быть удален функцией pg_free_result(). Хотя в этом нет необходимости, так как ресурсы автоматически освобождаются при завершении сценария.

pg_put_line

Пересылка серверу строки

boo! pg_put_line ([resource connection_id. string data])

Для ускорения процедуры занесения информации в БД PostgreSQL позволяет метод непосредственной пересылки строк через поток ввода-вывода. Возвращает TRUE или FALSE — при ошибке.

Конец строки (записи БД) маркируется символом «\n», а поля разделяются знаком табуляции «\t». Приложение должно явно послать пару символов «\.» для указания, что клиент закончил отсылать данные.

<?php // скоростное добавление
строк в таблицу $conn = pg_pconnect
("dbname=foo");
pg_exec($conn. "create table tbl
(a int4. b char(16). d floats)"):
pg_exec($conn. "copy tbl from stdin"):
// начать запись pg_put_line
($conn. "3\thello world\t4.5\n").
pg_put_line
($conn. "4\tgoodbye world\t/.ll\n")
, pg_put_line($copn. "\\.\n"):
pg_end_copy($conn), ?>

См. также pg_end_copy().

pg_end_copy

Синхронизация операции вставки

boo! pg_end_copy ([resource connection])

Функцию следует вызывать после того, как функцией pg_put_line() завершена передача данных серверу PostgreSQJL (для того, чтобы зафиксировать полученные данные). Возвращает TRUE или FALSE — при ошибке.

См. также pg_put_line().

pg_numrows

Получение числа возвращенных записей

int pg_numrows (int result_id)

Возвращает число записей, возвращенных запросами SELECT. Дескриптор набора возвращенных записей (аргумент result_id) должен быть у получен от функции рд_ехес().

pg_numfields

Получение числа полей в наборе записей

int pgjiumfields (int result_id)

Возвращает число полей (столбцов) в наборе записей, возвращенном функцией рд_ехес(), или -1 — при ошибке.

pg_cmdtuples

Получение числа измененных записей в БД

int pg_cmdtuples (int result_id)

Возвращается число записей (сущностей), измененных в результате выполнения запросов DELETE, INSERT, REPLACE или UPDATE. Если изменений произведено не было, возвращает 0.

<?php
Sresult = pg_exec ($conn.
"INSERT INTO publisher VALUES
('Author')"): $rows_affected =
pg_ondtuples ($result):
echo "Число выполненных изменений:
". $rows_affected: ?>

pg_freeresult

Уничтожение набора записей

Int pg_freeresult (int result_id)

Функция освобождает память, занимаемую набором записей resultjid, возвращенным запросом. Ее следует использовать только в случае, если требуется экономить память, так как память автоматически освобождается при завершении сценария.

pg_result

Получение определенного элемента набора записей

mixed pg_result (int result_id. int rowjiumber, mixed fieldname)

Функция возвращает значение из набора записей, возвращенного функцией рд_Ехес(). Аргументы row_number и fieldname указывают соответственно номер строки (записи) и ноле (столбец). Нумерация начинается от 0. Поле можно указывать его именем или номером.

PostgreSQL имеет много встроенных типов данных, и РНР поддерживаются только основные. Тины integer, boolean и old возвращаются как целочисленные значения. Все формы float и real типов возвращаются как дробные значения. Все остальные типы (включая массивы) возвращаются в виде строк в том же формате, что и в программе psql.

pg_fetch_array

Занесение записи в массив

array pg_fetch_array (int result, int row [.int result_type])

Возвращает массив, соответствующий записи с номером row, из набора записей result, возвращенных запросом, или FALSE, если такой записи не имеется (также выдается предупреждение).

Данная функция является расширением функции pg_fetch_row(), она может возвращать нумерованный или ассоциативный массив (а также объединенный). Вид возвращаемого массива может указываться в аргументе resu1t_type одной из констант: PGSQL_NUM, PGSQL_ASSOC, PGSQL_BOTH (по умолчанию).

В ассоциативных массивах индексами служат имена полей (они всегда в нижнем регистре).

Заметьте, что функция выполняется лишь немного медленнее, чем pg_fetch_row(), но предоставляет дополнительную функциональность.

<?php
Jconn = pg_pconnect
("dbname=publisher");
if CSconn) {
echo "An error occured.\n"; exit; }
Sresult -= pgjxec
(Sconn. "SELECT * FROM Authors");
if (!$result) {
echo "An error occured.\n";
exit: }
$arr = pg_fetch_array
(Sresult. 0); echo $arr[0] .
" или ". $arr["author"] :
// можно и так
for($i=0; $row = @pg_fetch_array
(Sresult.Si); $i++)
{ echo $row["author"]; } ?>

См. также pg_fetch_row().

pg_fetch_row

Занесение записи в нумерованный массив

array pg_fetch_row (int result, int row)

Возвращает массив, соответствующий записи с номером row, из набора записей result, возвращенных запросом, или FALSE, если такой записи не имеется.

<?php
if (!($conn = pg_pconnect
("dbname=publisher"))) {
echo "An error occured.\n";
exit. }
if (! (Sresult = pgjxec
($conn. "SELECT * FROM authors")))
{
echo "An error occured.\n";
exit: } $num = pg_numrows
(Sresult);
for ($i=0: Si<$num: Si++)
{ $r = pg_fetch_row(Sresult. Si).
for ($j=0: $j<count($r): Sj++) {
echo "SrLSj]&nbsp,"; }
echo
"<BR>"; } ?>

См. также: pg_fetch_array(), pg_fetch_object(), pg_result().

pg_fetch_object

Получение записи в свойствах объекта

object pg_fetch_object (int result, int row [, int resultjtype])

Возвращает объект, в свойствах которого находятся поля текущей записи, или FALSE, если записей более не имеется.

По скорости выполнения функция идентична pg_fetch_array() и почти идентична pg_fetch_row().

<?php Sdatabase = "verlag".
$db_conn = pg_connect
("host-localhost port=5432
dbnameSdatabase");
if (!$db_conn):
?><Hl>Failed connecting to
postgres database
<?php echo $database ?>
</Hl> <?php
exit: endlf:
$qu = pg_exec
($db_conn, "SELECT *
FROM verlag ORDER BY autor");
for ($row = 0: Sdata =
@pg_fetch_object ($qu. $row).
$row++){ echo $data->autor."
("; \ echo Sdata->jahr ."):
": echo $data->titel."<BR>": } ?>
<PRE><?php
$fields[] = Array
("autor". "Author"), SfieldsL]
= Array ("jahr". " Year"),
Sfieldst] = Array ("titel". " Title");
for ($row = 0: Sdata =
@pg_fetch_object (Jqu. $row);
$row++) : reset (Sfields);
while (list (,$item) = each (Sfields)):
echo $item[l].": ".$data->$item[0].
"\n", endwhile: endfor;
echo "</PRE>";
pg_freeResult ($qu);
pg_close ($db_conn): ?>

См. также: pg_fetch_array() и pg_fetch_row().

pg-fieldname

Определение имени поля

string pg_fieldname (int resulted, int field_number)

Возвращает имя поля по его номеру в наборе записей. Нумерация начинается с 0.

pg_fieldnum

Определение номера поля

int pg_fieldnum (int result_id, string fieldjiame)

Возвращает номер поля в наборе записей по его имени или -1 — при ошибке.

pg_fieldtype

Определение типа поля

string pg_fieldtype (int resu1t_id, ijit field_number)

pg_fieldprtlen

Определение длины значения в поле

int pg_fie!dprtlen (int result_id, int row_number, string field_name)

Возвращает фактическую длину содержащегося в поле значения в байтах (число символов). Возвращает -1 при ошибке.

pg_fieldsize

Определение внутреннего размера поля

int pg_fieldsize (int result_id, int field_number)

Возвращает размер в байтах или значение -1 для полей переменной длины. При ошибке возвращается FALSE.

pg_fieldisnull

Определение равенства значения поля NULL

int pg_fieldisnull (int resultjid, int row, mixed field)

Возвращает О, если поле field в записи row не содержит значение NULL, или 1 в противном случае. Поле может быть указано именем или номером.

pg_getlastoid

Получение идентификатора последнего объекта

int pg_getlastoid (int result_id)

Используется для получения идентификатора (oid) назначенному объекту, вставленному последней SQL-командой INSERT в функции рд_ехес(). Возвращает положительное значение oid или -1, если последней командой в рд_ехес() не была INSERT.

pg_locreate

Создание большого объекта

int pgjocreate (int conn)

Создает «Inversion Large Object» и возвращает его oid. conn содержит дескриптор подключения. Режимы доступа PostgreSQL INV_READ, INV_WRITE и INV_ARCHIVE не поддерживаются, объект всегда создается с доступом для чтения и записи. INV_ARCHIVE был удален из самого PostgrcSQL (для версий 6.3 и старше).

pg_loopen

Открытие большого объекта

int pgjoopen (int conn, int objoid, string mode)

Открывает большой объект БД «Inversion Large Object» и возвращает его файловый дескриптор. Аргумент objoid указывает действительный oid (идентификатор объекта), a mode — режим доступа, который может принимать значения «г», «w» или «rw».

Не закрывайте подключения, не закрыв предварительно большой объект.

pg_loclose ,

Закрытие большого объекта

void pgjoclose (int fd)'

В аргументе fd указывается дескриптор объекта, полученный от рд_ loopen().

pg_loimport

Импорт большого объекта из файла

int pgjoimport (int file [, int connection_id])

Имя импортируемого файла (путь) указывается в аргументе filename. Возвращает идентификатор созданного объекта (oid) или FALSE -при ошибке. Не забывайте, что работа с большими объектами должна проходить внутри транзакции.

pg_loexport

Экспорт большого объекта в файл

boo! pgjoexport (int oid, int file [, int connectionjd])

Имя файла (путь) указывается в аргументе filename, а идентификатор объекта — в oid. Возвращает TRUE или FALSE — при ошибке. Не забывайте, что работа с большими объектами должна проходить внутри транзакции.

pg_loread

Чтение большого объекта

string pgjoread (int fd, int Ten)

Возвращает прочитанную из объекта строку, указанную его дескриптором fd. В аргументе 1еп указывается максимальная длина возвращаемой строки.

pg_loreadall

Создание большого объекта и отсылка его содержимого непосредственно в поток вывода (браузеру)

void pgjoreadall (int fd)

Используется в основном для вывода двоичных данных (графики и звука).

pg_lowrite

Запись большого объекта

int pgjowrite (int fd, string buf)

Записывает данные из буфера buf в объект, указанный дескриптором fd; возвращает число фактически записанных байтов или FALSE — при ошибке.

pg_lounlink

Удаление большого объекта void pgjounlink (int conn, int lobjid)

pg_errormessage

Получение последнего сообщения об ошибке

string pg_errormessage (int connection)

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().

Sybase

Sybase connect

Подключение к серверу Sybase

int sybase_connect (string server-name, string username, string ' password [, string charset])

Возвращает дескриптор подключения к серверу Sybase или FALSE -при ошибке. Аргумент servername должен быть действительным именем, определенном в файле interfaces.

Если функция повторно вызывается с теми же аргументами, новое подключение не создастся, а возвращается идентификатор имеющегося.

Подключение к серверу закрывается при завершении сценария или ранее, если явно вызывается функция sybase_close().

См. также: sybase_pconnect(), sybase_close().

sybase_close

Закрытие подключения к Sybase

bool sybase_close (int link_identifier)

Возвращает TRUE или FALSE — при ошибке.

Идентификатор закрываемого подключения указывается в аргументе; если его не указывать, то закрывается последнее открытое данным сценарием подключение.

Фактически использование данной функции не является обязательным, так как РНР автоматически закрывает все незакрытые неустойчивые подключения при завершении сценария. Заметьте: устойчивые подключения, созданные функцией sybase_pconnect(), не закрываются.

См. также: sybase_connect(), sybase_pconnect().

sybase_pconnect

Создание устойчивого подключения к серверу Sybase

int sybase_pconnect (string servername, string username, string password [, string charset])

Возвращает дескриптор устойчивого подключения или FALSE — при ошибке. sybase_pconnect() действует подобно sybase_connect() с двумя отличиями.

Перед подключением функция пытается проверить, имеется ли уже открытое (устойчивое) подключение с параметрами (имя сервера, пользователя и пароль), аналогичными указанным. Если такое подключение обнаруживается, то возвращается его идентификатор вместо создания нового подключения.

При завершении сценария подключение не закрывается, а остается действительным для дальнейшего использования. (Функция sybase_ close() не может закрыть подключения, созданные с помощью sybase_ pconnect().)

sybase_select_db

Выбор БД Sybase

bool sybase_se!ect_db (string databasejiame, int link_identifier) Возвращает TRUE или FALSE — при ошибке.

Устанавливает БД с именем database_name в качестве активной для текущего подключения или указанного в link_identifier. Если подключений не имеется, то косвенно вызывается функция sybase_connect() с параметрами по умолчанию.

Последующие запросы, выполняемые функцией, будут адресованы данной БД.

См. также: sybase_connect(), sybase_pconnect() и sybase_query()

sybase_query

Выполнение запроса к БД Sybase

int sybase_query (string query, int link_identifier)

Посылает запрос текущей БД, активной для текущего (последнего открытого) подключения или указанного в link_identifier. Если подключений не имеется, то косвенно вызывается функция sybase_ connect() с параметрами по умолчанию.

Возвращает дескриптор набора возвращенных записей или FALSE -при ошибке.

См. также: sybase_select_db() и sybase_connect().

sybase_affected_rows

Получение числа измененных последним запросом записей int sybase_affected_rows ([int link_identifier]}

Возвращается число записей, измененных в результате выполнения запросом DELETE, INSERT, REPLACE или UPDATE.

Если последним запросом была команда DELETE без ограничения WHERE, то из таблицы будут удалены все записи, но эта функция возвратит 0.

Чтобы выяснить, сколько записей было возвращено командой SELECT, используйте функцию sybase_num_rows().

Функция доступна только при использовании библиотеки интерфейса СТ Sybase, но не D В Sybase.

Sybase_num_rows

Получение числа записей, возвращенных запросом

int sybase_num_rows (int result)

См. также: sybase_query() и sybase_fetch_row().

sybase_num_fields

Получение числа полей в наборе записей

int sybase_num_fields (int result)

См. также: sybase_query(), sybase_fetch_field(), sybase_num_rows().

sybase_data_seek

Перемещение внутреннего указателя записи

bool sybase_data_seek (int result_identifier. int row_number)

При каждом вызове функции sybase_fetch row() (или подобной) внутренний курсор записи смещается на следующую запись. Данная функция позволяет свободно перемещать курсор в наборе записей res ul t_ identifier так, чтобы он указывал на запись с номером row_number (нумерация начинается с 0) при следующем вызове sybase_fetch_rov*().

Она возвращает TRUE или FALSE — при ошибке.

Sybase_result

Получение определенного элемента набора записей

string sybase_result (int result, int row, mixed field)

Возвращает содержимое ячейки из набора записей resul t. В аргументе row указывается номер записи (нумерация начинается с 0), в аргументе field можно указать индекс поля (число), имя поля, полное имя поля (вида: имя_таблицы.имя_поля) или псевдоним поля (для запросов типа 'SELECT foo AS bar FROM...).

При работе с большими наборами записей быстрее выполняются функции типа _fetch_ (см. ниже). Также заметьте, что численные индексы обрабатываются быстрее строковых.

Не следует вызывать функцию mysql_result() в сочетании с другими функциями обработки набора записей.

Рекомендуется использовать альтернативные функции: sybase_fetch_ row(), sybase_fetch_array() и sybase_fetch_object().

sybase_fetch_row

Занесение записи в нумерованный массив

array sybase_fetch_row (int result)

Возвращает массив, соответствующий текущей записи, из набора записей result, возвращенных запросом (последующий вызов функции возвращает следующую запись), или FALSE, если записей более не имеется. Каждое поле записи сохраняется в нумерованном элементе массива (нумерация начинается с 0).

См. также: sybase_fetch_array(), sybase_fetch_object(), sybase_data_seek(), sybase_result().

sybase_fetch_array

Занесение записи в массив

array sybase_fetch_array (int result)

Возвращает массив, соответствующий текущей записи, из набора записей result, возвращенных запросом, или FALSE, если записей более не имеется (при этом курсор записи перемещается на следующую).

Данная функция является расширением функции sybase_fetch_row(), и она возвращает объединенный нумерование-ассоциативный массив. Доступ к элементам массива может осуществляться как через имена полей, так и по их номеру.

Заметьте, что функция выполняется незначительно медленнее, чем sybase_fetch_row(), но предоставляет дополнительную функциональность.

См. также sybase_fetch_row().

sybase_fetch_object

Получение записи в свойствах объекта

int sybase_fetch_object (int result)

Возвращает объект, в свойствах которого находятся поля текущей записи, или FALSE, если записей более не имеется.

По скорости выполнения (и функциональности) функция идентична sybase_fetch_array() и почти идентична sybase_fetch_row().

См. также: sybase_fetch_array() и sybase_fetch_row().

sybase_free_result

Уничтожение набора записей

bool sybase_free_result (int result)

Функция освобождает память, занимаемую набором записей result, возвращенным запросом. Ее следует использовать только в том случае, если требуется экономить память, так как память автоматически освобождается при завершении сценария.

sybase_fetch_field

Получение информации о поле записи в свойствах объекта

object sybase_fetch_field (int result [, int field_offset])

Если номер поля field_offset не указан, при каждом вызове функции возвращаются свойства следующего поля из набора записей resul t.

Возвращаемый объект имеет следующие свойства (и содержит информацию):

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

См. также sybase_field_seek().

sybase_field_seek

Перемещение к указанному полю

int sybase_field_seek (int result, int field_offset)

Перемещается к указанному числом field_offset нолю. И если при следующем вызове sybase_fetch_field () не указывается номер поля, будет возвращено это поле.

См. также sybase_fetch_field().

sybase_get_last_message

Получение последнего сообщения сервера string sybase_getjast_message (void)

sybase_min_client_severity

Установка минимального уровня требовательности клиента

void sybasejnin_client_severity (int severity)

Функция доступна только при использовании библиотеки интерфейса СТ Sybase, но не DB Sybase.

См. также sybase_min_server_severity().

sybase_min_server_severity

Установка минимального уровня требовательности сервера

void sybase_min_server_severity (int severity)

Функция доступна только при использовании библиотеки интерфейса СТ Sybase, но не DB Sybase.

См. также sybaseji)in_client_severity().

sybase_min_message_severity

Установка минимального уровня возвращаемых сообщений

void sybase_min_message_severity (int severity)

См. также sybase_min_error_seventy().

sybase_min_error_severity

Установка минимального уровня сообщаемых ошибок

void sybase_min_error_severity (int severity)

См. также sybase_rain_message_severity().

Oracle

Примерный образец работы с БД:

<?php
putenv( "ORACLE_SIDORACLE");
puterw("ORACLE_HOME=
/opt/oracle/oracle/8.0.3");
$conn = ora_login("user_nam". "passwd"):
// Sconn - ora_login
("user_nam@server", "passwd");
// или так $curs = ora_open($conn).
ora_comrntoff($conn):
$query = "select * from t";
ora_parse($curs. $query);
ora_exec($curs):
// ora_do(Sconn. $query);
// краткая версия запроса
$ncols = orajiumcols(Scurs);
// число полей Snrows =
ora_numrows(Scurs);
// число записей
$hdr=TRUE:
while (ora_fetch(Scurs))
{ // следующая запись
if(Shdr) // выводить заголовок
только в начале
for (Si=0; $i<$ncols: Si++)
pnntf("[Si] Its Us). \n". ora_columnname
($curs. $1).
ora_columntype(Scurs. $1))
: $hdr=FALSE. for ($1=0; Si
<Sncols; $l++)
print ora_getcolumn(Scurs.$i).
"; "; // поле print "\n"; } ?>

Ora_Logon

Подключение к серверу Oracle

int orajogon (string user, string password)

Возвращает дескриптор подключения к БД или FALSE — при ошибке.

Подключения также могут создаваться с использованием синтаксиса SQL*Net с указанием TNS имени пользователя user в виде:

Sconn = Ora_Logon
( "system/user@host" . "pass" );

Если имеются не-ASCII символы, то должна быть установлена (до запуска сервера) переменная окружения (Oracle) NLS_LANG.

Ora_Logoff

Закрытие подключения

int orajogoff (int connection)

Возвращает TRUE или FALSE — при ошибке.

См. также ora_logon().

Ora_pLogon

Создание устойчивого подключения к серверу Oracle

int ora_plogon (string user, string password)

См. также oraJogon().

Ora_0pen

Открытие курсора

int ora_open (int connection)

Возвращает индекс курсора для подключения connection или FALSE -при ошибке.

Ora_Close

Закрытие курсора

int ora_close (int cursor)

Закрывает курсор, открытый ora_open().

Возвращает TRUE или FALSE -при ошибке.

Ora_CommitOn

Разрешение автовыполнения запросов /»

int ora_commiton (int conn) {

Каждый запрос для подключения conn, выполняемый функцией ога_ ехес(), будет автоматически завершаться.

Возвращает TRUE или FALSE — при ошибке.

Ora_CommitOff

Запрет автовыполнения запросов

int ora commitoff (int conn)

Ora _Commit

Завершение текущей транзакции int ora_commit (int conn)

Транзакцией является серия изменений в БД (запросов) после последнего завершения транзакции (если автозавершсние было отключено).

Возвращает TRUE или FALSE — при ошибке.

Ora_Rollback

Отмена транзакции

int ora_rolI back (int connection)

Функция, обратная ora_commit().

Возвращает TRUE или FALSE — при ошибке.

Ora_Parse

Интерпретация SQL-запроса

int ora_parse (int cursor_ind, string sql_statement, int defer)

Подготавливает для исполнения запрос SQL или блок PL/SQL и связывает с курсором.

Возвращает 0 или -1 - при ошибке.

См. также: ога_ехес(), ora_fetch() и ora_do().

Ога_Ехес

Исполнение подготовленного запроса

int ora_exec (int cursor)

Возвращает TRUE или FALSE — при ошибке.

См. также: ora_parse(), ora_fetch() и ora_do().

Ora_Do

Одновременное выполнение команд Parse; Exec, Fetch

int ora_do (int conn, string query)

Функция является комбинацией трех функций: ora_parse(), ora_exec(), ora_fetch().

Возвращает TRUE или FALSE — при ошибке.

См. также: ora_parse(), ora_exec() и ora_fetch().

Ora_Bind

Связывание переменной РНР с SQL-параметром Oracle

int ora_bind (int cursor, string PHP_var_name, string SQL_param_name, int length [, int type])

Возвращает TRUE или FALSE — при ошибке.

SQL параметр должен указываться в виде ":name". Необязательным аргументом type можно указать вид SQL параметра (входящий, выходящий): IN/OUT (0, по умолчанию), in (1) или out (2). В РНР 3.0.1 можно использовать вместо цифр константы: ORA_BIND_INOUT, ORA_ BINDJN и ORA_BIND_OUT.

Функция должна вызываться после ora_parse() и до ога_ехес().

<?php
ora_parse(Scurs. "declare tmp INTEGER; "
"begin tmp :- :in; :out :- tmp; :x := 7.77; end;"):
ora_bind($curs. "result". ":x". $len. 2).
ora_bind($curs. "input", "in". 5. 1);
ora_bind($curs. "output". ";out". 5. 2).
Sinput = 765; ora_exec($curs);
echo "Result; tresult; Out: Soutput: In: $input":
?>

Ora_Error

Получение сообщения об ошибке Oracle

string Ora_Error (int cursor_or_connection)

Сообщение возвращается в виде строчек вида XXX-NNNNN, где XXX означает место возникновения ошибки, a NNNNN — причину.

Ora_ErrorCode

Получение кода ошибки Oracle

int Ora_ErrorCode (int cursor_or_connection)

Возвращает численное значение ошибки, произошедшей при последней операции.

О означает отсутствие ошибки.

Ora_Numcols

Получение числа полей, возвращенных запросом

int orajiumcols (int cursorjind)

См. также: ora_parse(), ora_exec(), ora_fetch() и ora_do().

Ora_Numrows

Получение числа записей, возвращенных запросом

int orajiumrows (int cursor_ind)

Ora_Fetch

Получение записи

int ora_fetch (int cursor)

Возвращает TRUE или FALSE — при ошибке или если записей больше не имеется.

См. также: ora_parse(), ora_exec() и ora_do().

Ora_Fetch_lnto

Получение записи в массиве

int ora_fetch_into (int cursor, array result [, int flags])

<?php array($results);
ora_fetch_into($cursor. &$results):
echo $results[0]. $results[ll: ?>

Заметьте, что массив необходимо передавать по ссылке.

См. также: ora_parse(), ora_exec(), ora_fetch() и ora_do().

Ora_GetColumn

Получение данных поля записи

mixed ora_getcolumn (int cursor, mixed column)

Возвращает значение поля (или результата SQL/PL функции) или FALSE — при ошибке. Заметьте, что возвращаемые данные могут иметь значения: NULL, "", О, "О".

Ora_ColumnName

Получение имени поля

string Ora_ColumnName (int cursor, int column) Возвращает имя в верхнем регистре.

Ora_ColumnSize

Получение размера поля

int Ora_ColumnSize (int cursor, int Column)

Ora_ColumnType

Получение типа поля

string Ora_ColumnType (int cursor, int column)

Возвращаемая строка может иметь следующие значения:

  • «VARCHAR2»;
  • «VARCHAR»;
  • «CHAR»;
  • «NUMBER»;
  • «LONG»;
  • «LONG RAW»;
  • «ROWID»;
  • «DATE»;
  • «CURSOR».

Oracle 8

Эта группа функций позволяет обращаться к серверам БД Oracle 8 и Oracle 7, используя Oracle 8 Call-Interface (OCI8). Для этого требуются клиентские библиотеки Oracle 8.

Это расширение более функционально, нежели стандартное; оно поддерживает связывание переменных РНР с переменными Oracle, имеет полную поддержку типов LOB, FILE, ROWID и позволяет использовать определяемые пользователем переменные.

До использования этого расширения необходимо установить параметры окружения Oracle. Это включает установку следующих системных переменных:

  • ORACLEJOME;
  • ORACLEJID;
  • LD_PRELOAD;
  • LD_LIBRARY_PATH;
  • NLS_LANG;
  • ORAJLS33.

После этого необходимо добавить в группу пользователей oracle пользователя (обычно nobody или www), от имени которого запускается РНР (web-сервер).

OCIServerVersion

Получение строки информации сервера

string OCIServerVersion (int conn)

<?php
$conn = OCILogonC'scott"."tiger");
print "Server Version "
. OCIServerVersionUconn):
OCILogOff($conn): ?>

OCILogon

Подключение к серверу Oracle

int OCILogon (string username, string password [, string db])

Возвращает дескриптор подключения, необходимый для указания для большинства функций OCI. В третьем аргументе можно указать либо константное имя локальной БД, либо ссылку на раздел в файле tnsnames.ora; если этот аргумент не указан, РНР будет использовать переменные окружения ORACLE_SID или TWO_TASK (tnsnames. ога) для определения, к какой БД следует подключиться.

Подключения, созданные этой функцией, становятся разделяемыми на уровне сценария, что означает, что все команды COMMIT и ROLLBACK будут применяться ко всем транзакциям, даже если они принадлежат разным подключениям (см. пример ниже).

См. также: OCIPLogonz() и OCINLogon().

OCINLogon

Создание изолированного подключения к БД Oracle

int OCINLogon (string username, string password [, string db])

Функция сходна с OCILogon(), но отличается тем, что все onepai COMMIT и ROLLBACK применяются только к транзакциям укаг ною подключения.

Пример демонстрирует разделение подключений.

<?php $db = "":
$cl = ocilogonC'scott". "tiger". $db):
/'$c2 = ocilogonC'scott"."tiger".$db);
// для сравнения
$c2 = ocinlogonC'scott". "tiger".$db):
function create_table(Sconn)
{ Sstmt = ociparse($conn.
"create table scott hallo (test
varchar2(64))");
ociexecutetSstmt):
echo Sconn." Таблица создана \n\n". , }
function drop_table($conn)
{ Sstmt = ociparse($conn."drop
table scott hallo"):
ociexecute($stmt).
echo Sconn." dropped table\n\n": ! }
function insert_data(Sconn)
{ Sstmt = ociparse(Sconn."insert
into scott.hallo
valuest'Sconn' [j ' ' | to_char
(sysdate. 'DD-MON-YY HH24:MI:SS'))"):
ocie/ecute(Sstmt.OCI_DEFAULT).
echo Sconn." inserted hallo\n\n": }
function delete_data(Sconn)
{ Sstmt = ociparse
(Sconn."delete from scott.hallo");
ociexecute(Sstmt.OCI_DEFAULT);
echo Sconn." deleted hallo\n\n"; }
function commit(Sconn)
{ ocicommit(Sconn);
echo Sconn." committed\n\n": }
function roll back(Sconn)
{ ociroll back(Sconn):
echo Sconn " rollback\n\n"; }
function select_data($conn)
{ Sstmt = ociparse
($conn."select * from scott.hallo"):
ociexecute($stmt.OCI_DEFAULT).
echo $conn."---selecting\n\n";
while (ocifetch($stmt))
echo Sconn." <".ociresult
(Sstmt."TEST").">\n\n":
echo Sconn "—done\n\n"; }
create_table($cl); insert_data($cl):
selectjJata(tcl): select_data($c2):
roliback(Scl):
select_data($cl). select_data($c2):
insert_data($c2): согап t($c2);
select_data($cl).
delete_data($cl): select_data($cl):
select_data($c2). commit($cl):
select_data(Scl): select_data($c2).
drop_table($cl): ?>

См. также: OCILogon() и OCIPLogon().

OCILogOff

Отключение от Oracle

int OCILogOff (int connection)

OCIPLogon

Создание устойчивого подключения к Oracle

int OCIPLogon (string username, string password [, string db])

Функция сходна с OCILogon(), но отличается тем, что подключение не закрывается после завершения сценария и остается действительным для дальнейшего использования.

См. также: OCILogon() и OCINLogon().

OCIInternalDebug

Разрешение или запрещение внутренней отладки void OCIInternalDebug (int onoff)

По умолчанию отладка запрещена. Указание в аргументе значения О выключает отладку, а 1 — включает.

OCIDefineByName

Назначение PHP-переменной для возвращения значения из запроса SELECT

int OCIDefineByName (int stmt, string ColumnName, mixed variable [, int type])

Используется при необходимости возвращения запросом выборки stmt данных поля ColumnName в переменную variable (тип возвращаемых данных type можно не указывать). Имя поля должно быть указано в верхнем регистре (в запросе регистр не важен). Если вы определяете переменную, отсутствующую в запросе, ошибки не возникает.

Типы абстрактных данных (LOB/ROWID/BFILE) необходимо предварительно инициализировать функцией OCINewDescriptor().

См. также OCIBindByName().

<?php
Sconn = OCILogonC'scott". "tiger"),
Istmt = OCIParse($conn."select empno.
ename from emp"): /* the define
MUST be done BEFORE odexecute! */
OCIDefineByNametSstmt."EMPNO",Sempno);
OCIDefineByNametSstmt."ENAME".Sename):
OCIExecute($stmt):
while (OCIFetch(Sstmt))
echo "empno:".$empno.". ename:".Sename."\n";
OCIFreeStatement($stmt):
OCILogoff(Sconn): ?>

OCIBindByName

Связывание переменной РНР с Oracle

int OCIBindByName (int stmt, string ph_name, mixed invariable, int length [, int type])

Назначает переменную PHP variable для ввода-вывода данных ир операциях с Oracle в качестве параметра phjiame. Аргумент length устанавливает размер данных переменной в байтах; значение -1 указывает, что размер определяется автоматически.

Для операций с абстрактными типами (LOB/ROWID/BFILE) прел варитслыю необходимо инициализировать их дескриптор функци ей OCINewDescriptorO. Для этих типов размер length должен быт указан значением -1. Тип type может определяться следующим константами: OCI_B_FILE (двоичный файл), OCI_B_CFILE (символьны файл), OCI_B_CLOB (символьный LOB), OCI_B_BLOB (двоичный LOB) OCI_B_ROWIO (ROWID).

<?php
$sth - OCIParse ( $dbh. "begin
sp_newaddress( -addressjd.
'Sfirstname'.
'Slastname'. 'Scompany'. '$addressl'.
'$address2'. 'Scity'. 'Sstate'.
'$postalcode'. 'Scouniry'. :error_code );
end;" ).
// Вызвать хранимую процедуру
spjiewaddress.
с параметрами :address_id //
(.входной-выходной параметр) и
:error_code being <выходной).
OCIBindByName ( $$th. " :address_id".
Saddrjd. 10 ): OCIBindByName
( $sth. " :error__code". Serrorcode. 10 );
OCIExecute ( $sth ): ?>
/y**********Jc*********************x*********
<?php Sconn - OCILogonC'scott"."tiger"),
Sstmt = OCIParse($conn."insert into enp
(empno. ename) ".
"values (:empno,:ename!
1 returning ROWID into :nd"):
Sdata = arraydlll =>
"Lar-y" 2222 => "Bill". 3333 => "Jim"),
Srowid = OCINewDescnptor
($conn.OCI_D_ROWID);
ОС IBindByName(Istmt.":empno"
.&$empno.32). OCIBipdByName
($stmt."-ename".&$ename.32),
OCIBindByNametS
stmt.":rid".&$rowid.-1.0CI_B_ROWID):
Supdate = OCIParse($conn.
"update emp set sal = :sal where
ROWID = :nd"): OCIBmdByNaTO
($Update.":nd".&$rowid.-1.0CI_6_ROWID).
OCIBindBy
Namecsupdate.":sal",&$sal.32)
$sal - 10000.
while nist($enpno..$enarae)
= each($data)) { OCIExecute
($stmt). OCIExecute($Update);
$rowid->free(> OCIFreeStatement
($update): OC!FrepStatement($stmt).
$stmt = OCIParSe($conn."select *
from emp
where empno in
(1111.2222,3333)"):
OCIExecute($stmt);
while (OCIFetchInto
($stmt.&$arr.OCI_ASSOC))*
var_dump($grr).
OCIFreeStatement($stmt).
Sstmt - OCIParse($conn.
"delete from emp
where empno in (1111.2222.3333)");
OCIExecute($stmt).
OCIFreeStatement($stmt):
OCIlogoff($conn) ?>

OCI Parse

Подготовка запроса к выполнению

int OCIParse (jnt conn, strint query)

Возвращает дескриптор запроса query для подключения conn или FALSE - при ошибке.

OCIExecute

Выполнение запроса

int OCIExecute (int statement [, int mode])

Выполняет счапрос, предварительно подготовленный OCIParseO. Аргументом mode можно указать режим исполнения (по умолчанию OCI_COMMIT_Olsj_sUCCESS); если не требуется автоматическое выполнение запроса, указывайте OCI_DEFAULT.

OCICommit

Завершение незавершенных транзакций

int OCICommit (int connection)

OCIRollback

Отмена незавершенных транзакций

int OCIRollback (int connection)

OCINewDescriptor

Инициализация дескриптора LOB/FILE

string OCINewDescriptor (int connection [, int type])

Выделяет ресурсы, необходимые для хранения дескрипторов или LOB-локаторов. Тип можно указать в аргументе type: OCI_D_FILE, OCI_DJ_OB (по умолчанию), OCI_D_ROWID. Для объектов LOB доступны методы load, save и savefile, а для BFILE — только load.

<?php // фрагмент for retrieve
data use (after fetch)
Sresult = OCIResult($stmt, $n):
if ds_object (Sresult))
Sresult = Sresult->load():
II For INSERT or UPDATE
statement use
$sql = "insert into table (fieldl. field2)
values (fieldl = 'value'.
field? = empty_clob()) returning
fie!d2 into :field2"; OC!Parse
($conn. $sql): Sclob =
OCINewDescriptor($conn. OCIJM-OB).
OCIBindByName
($stmt. ":field2". &$clob. -1,
OCI_B_CL03). OCIExecute
($stmt. OCI_DEFAULT):
$clob->save ("some text"). ?>
<?php // Сценарий вызывается
формой HTML, передавая
параметры:
// $user. Spassword,
$ table. $where. и Scommitsize
$conn = OCILogon($user. Spassword);
$stmt = OCIParsetSconn.
"select rowid from Stable $v.here"):
Srowid = OCINewDescnptor
(sconn.OCI_D_ROWID);
OCIOefineB>Name($stmt.
"ROUID",&$rowid); ОС I
Execute(Sstmt). while
( OClFetch(Sstmt) ) {
$nrows = OCIRowCount(Sstmt);
Sdelete = OCIParsetSconn."delete
from Stable where ROWID - rid").
OCIBindByName
(Sdelete."-nd" &$rowid.-1.0CI_B_ROWID);
OCIExecute($deletei. print "$nrows\n",
if ( ($nrows % Scommitsize) == 0 )
{ OCIComirnt($conn). } }
Snrows = OCIRowCountC$stmt):
print "Snrows удалено . \n":
OCIFreeStatement(Sstmt); OClLogoff($conn): ?>
<?php /* Сценарий загружает файл в поле LOB */
if(Msset($lobjjpload) || $lob_upload ^= 'none'){ ?>
<form action="upload bhp" method="post"
enctype="multipart/form-data">
Upload file- <input type="file" name=
"lob_upload"><br> <input type="submit"
value="Upload"> - <inpwt type="reset">
</form> <?php } else {
// $lob_upload contains the temporary
filename of the uploaded file $conn =
OCILogon($user. Spassword); , Slob =
OCINewDescnptor($conn. OCI_D_Li)B).
Sstmt OCIParseCSconn."insert into
Stable (id. the_blob) values
(my_seq.NEXTVAL. HMPTY_BLOB(> )
returnina thp_hlob into the_blob"),
OCIBindByNarnpCSstmt. ':tne_blob',
&Slob. -1. OCIJJLOB); OCIExecuteCSsiirtt;;
1f($lob->savefi1e($lob_up1oad))
{ ОС 'ommit(Sconn);
echo "Blob successfully uploaded\n"; }else{
echo "Couldn't upload Blob\n"; }
OCIFreeDesc(Slob); OCIFreeStatement
(Sstmt): OClLogoff($conn): } ?>

OCIRowCount

Получение числа измененных записей int OCIRowCount (int statement)

Возвращается число записей, измененных запросом (например, UPDATE). Функция не возвращает число возвращенных запросом записей!

<?php $conn = OCILogonC'scott"."tiger"):
Sstmt = OCIParsetSconn,"create table
emp2 as select * from emp");
OCIExecute($stmt).
print OCIRowCount(Sstmt) .
" записей добавлено.<BR>":
OCIFreeStatement($stmt).
$stmt = OCIParse($conn."delete from emp2").
ОС I Execute(Sstmt),
print OCIRowCount(Sstmt) " записей удалено <BR>".
OCICommit(Sconn). OCIFreeStatementOstmt);
Sstmt = OCIParsetSconn."drop table emp2").
OCIExecute(Sstmt). OCIFreeStatement($stmt):
OCILogOff($conn). ?>

OCINumCols

Получение числа полей в запросе

int OCINumCols (int stmt)

<?php Sconn = OCILogonC'scott". "tiger");
Sstmt = OCIParse($conn."select * from emp"):
OCIExecutetSstmt): while ( OCIFetch($stmt) )
{ Sncols = OCINumColstSstmt); for
( $1 = 1; $i <= Sncols; $i++ ) {
Jcolumnjiame = OCIColumnName(Sstmt.$1):
Scolumn_value = OCIResultCSstmt.SD;
print $column_name .':', Scolumn_value . "\n"; )
print "\n"; } OCIFreeStatemenUSstrnt):
OCILogoff(Sconn): ?>

OCIResult

Получение значения поля записи, возвращенной запросом

mixed OCIResult (int statement, mixed column)

Возвращает данные ноля column текущей записи (см. OCIFetch()). Возвращает все типы данных как строки, за исключением абстрактных типов (ROWID, LOB и FILE).

OCIFetch

Занесение следующей возвращенной записи в буфер результата int OCIFetch (int statement)

Позволяет получить запись после запроса выборки (SELECT) с помощью последующих вызовов OCIResultO, возвращающих поля записи.

OCIFetchlnto

Занесение следующей записи в массив

Int OCIFetchlnto (int stmt, array Sresult [, int mode])

Функция позволяет поочередно получить все записи, возвращенные запросом выборки. По умолчанию массив result будет содержать все поля записи (содержащие данные, не равные NULL) с нумерацией начиная с 1.

Аргумент mode позволяет изменить действие функции. Константы могут комбинироваться сложением (например, OCI_ASSOC+OCI_RETURN_NULLS):

  • OCI_ASSOC — возвращать ассоциативный массив;
  • OCI_NUM — возвращать нумерованный массив (по умолчанию);
  • OCI_RETURN_NULLS — возвращать пустые поля;
  • OCI_RETURN_LOBS — возвращать содержимое полей LOB вместо их дескриптора.

OCIFetchStatement

Занесение результата запроса в массив

int OCIFetchStatement (int stmt, array Svariable)

Возвращает число записей, занесенных в массив variable.

<?php Sconn = OCILogonC'scott"."tiger"):
$stmt = OCIParse($conn,"select * from emp");
OCIExecute($stmt).
Snrows = OCIFetchStatement($stmt,$results);
if ( Snrows > 0 ) {
print "<TABLE BORDER=\"l\"><TR>\n";
while ( list($key. $val) = each($results) )
print "<TH>$key</TH>\n":
print "</TR>\n";
for ( $1 = 0. $1 < Snrows; $i++ )
{ print "<TR>\n"; reset($results);
while ( $column = each($results) )
{ $data = $columr>['value'] [$i];
print "<TD>$data</TD>\n"; }
print "</TR>\n":
print "</TABLE>\n": }
print "Получено Snrows записей <BR>\n";
OCIFreeStatement($stmt);
OCILogoff($conn): ?>

OCIColumnlsNULL

Проверка, содержит ли поле записи значение NULL

int OCIColumnlsNULL (Int stmt, mixed column)

Возвращает TRUE, если ноле column в результате запроса strat имеет значение NULL. Поле может указываться номером (начиная с 1) или именем.

OCIColumnName

Получение имени поля

string OCIColumnName (int stmt, int col)

<?php Sconn OCILogonC'scott". "tiger").
Snmt = OCIParse($conn."select * from emp");
ОС I Execute(Sstmt):
print "<TABLE BORDER=\"l\">
<TR><TH>Name</TH><TH>Type</TH>".
"<TH>Length</TH></TR>":
Srcols = OCINumCols($stmt): for
( $1 = 1. $1 <= $ncols>: $i++ ) { .
$column_name = OCIColumnNarae($stmt,$i);
$column_type = OCIColuranTypef$stmt.$i):
$column_size = OCIColumnSize($stmt.$i).
print "<TR><TD>$column_name</TD>
<TD>$column_type</TD>":
pn nt "<TD>$column_size</TD></TR>"; }
OCIFreeStatement($stmt):
OCILogofftSconn). ?>

См. также: OCINumCols(), OCIColumnType() и OCIColumnSize().

 

OCIColumnSize

Получение размера поля

int OCIColumnSize (Int stmt. mixed column)

См. также: OCINumCols(), OCIColumnName() и OCIColumnSize().

OCIColumnType

Получение типа поля

mixed OCIColumnType (int stmt, int col)

См. также: OCINumCols(), OCIColumnName() и OCIColumnSize().

OCIStatementType

Получение типа ОСI запроса

string OCIStatementType (int stmt)

Возвращает одно из следующих значений:

  1. «SELECT»;
  2. «UPDATE»;
  3. «DELETE»;
  4. «INSERT»;
  5. «CREATE»;
  6. «DROP»;
  7. «ALTER»;
  8. «BEGIN»;
  9. «DECLARE»;
  10. «UNKNOWN».

<?php
$conn = OCILogonC'scott"."tiger"):
$sql = "delete from emp where deptno = 10":
$stmt = OCIParse{$conn.$sql).
if ( OCIStatementType($stmt) == "DELETE" ) {
die "Вам не разрешено удалять записи этой таблицы"; }
OCII.ogoff($conn): ?>

OCINewCursor

Получение нового курсора (дескриптора запроса)

int OCINewCursor (int conn)

Используется для связывания ссылочных курсоров.

<?php // хранимая процедура info.output возвращает ref cursor в :data
Sconn = OCILogonC'scott". "tiger").
Scurs = OCINewCursor(Sconn);
Sstmt - OC!Parse($conn,"begin info.output(:data); end;");
ocibindbyname($stmt."data".&$curs.-1.0CI_B_CURSOR);
ociexecute(lstmt): ociexecute(Scurs);
while (OCIFetchInto($curs.&$data)) { var_dump($data); }
OCIFreeCursor(Sstmt); OClFreeStatement($curs);
OCILogoff($conn); ?>
<?prp // Example 2. REF CURSOR в запросе select
Sconn = OCILogonC'scott"."tiger").
$count_cursor = "CURSOR(select count(empno) num_emps from emp "
"where emp.deptno = dept.deptno)
as EMPCNT from dept"; Sstmt = OCIParse
(Sconn."select deptno.dname.Scount_cursor").
ociexecutetSstmt);
print "<TABLE BORDER=\"1\">
<TR><TH>DEPT NAHE</TH>";
print "<TH>DEPT #</TH><TH># EMPLOYEES</TH></TR>";
while (OC!FetchInto(Sstmt,&$data.OCI_ASSOO)
{ print "<TR>". Sdname = $data["DNAME"].
Sdcptno = Sdata["DEPTNO"]; print "
<TD>Sdname</TD><TD>Sdeptno</TD>",
ooexecute($data[ "EMPCNT" ]);
while (OCIFetchIntoCSdata[ "EMPCNT" ]
.&$subdata.OCI_ASSOO)
{ $num_emps = Ssubdata["NUM_EMPS"];
print "<TD>$num_emps</TD>"; } print "</TR>";
print "</TABLE>"; OClFreeStatement(Sstmt);
OCILogoff(Sconn):

OCIFreeStatement

Освобождение ресурсов, занимаемых запросом

int OCIFreeStatement (int stmt)

Возвращает TRUE или FALSE — при ошибке.

OCIFreeCursor

Освобождение ресурсов курсора

Int OCIFreeCursor (int stmt)

Возвращает TRUE или FALSE — при ошибке.

OCIFreeDesc

Уничтожение дескриптора большого объекта

int OCIFreeDesc (object lob)

Возвращает TRUE или FALSE — при ошибке.

OCI Error

Получение последнего сообщения об ошибке

array OCIError ([int stmt|conn(global])

Возвращает ассоциативный массив, содержащий элементы code (номер ошибки) и message (сообщение ошибки). Если ошибки не про-> изошло, возвращает FALSE.

Аргументом можно указать дескриптор, для которого получается сообщение.

dBase

Данная группа функций позволяет работать с данными БД dBase (dbf).

Индексы и memo-поля не поддерживаются. Блокировка также невозможна, поэтому, если два процесса web-сервера одновременно модифицируют один файл dBase, это может привести к его порче.

В отличие от SQL БД структура «БД» dBase не поддается модификации. dBase-файл представляет собой простую последовательность записей фиксированной длины; добавляемые записи дописываются в конец файла, а удаленные сохраняются до вызова функции dbase_ pack().

Рекомендуется использование современных БД, например MySQL или Postgres. Поэтому поддержка dBase в РНР предназначена исключительно для экспорта и импорта (для облегчения обмена с другими приложениями).

dbase_create

Создание БД dBase

int dbase_create (string filename, array fields)

Аргумент fields — это массив массивов, где каждый из массивов описывает одно поле БД (таблицы). Каждое поле состоит из имени, символа, обозначающего тип, и (при необходимости) размера поля и его точности.

Возможные типы полей:

  • L — двоичное, не имеет точности или размера;
  • М — Memo. Не поддерживается РНР, не имеет точности или размера;
  • D — дата, сохраняется как ГГГГММДД, не имеет точности или размера;
  • N — число, имеет длину и точность (число знаков после запятой);
  • С — строка.

Если файл БД был успешно создан, возвращается его дескриптор; в противном случае возвращается FALSE.

Sdbname = "/trap/test.dbf": // "database" name ;
' $def = // database "definition" \ array( v
array("date". "D"). arrayC'name". "C". 50).
arrayC'age". "N". 3. 0). array("email","C". 128).
array("ismember". "L") );
if (!dbase_create($dbname, $def)) print "Error!";

dbase_open

Открытие БД dBase

int dbase_open (string filename, int flags)

В аргументе flags указывается режим открытия (0 — только для чтения, 1 — только для записи и 2 — для чтения и записи). Возвращает дескриптор БД или FALSE — при ошибке.

dbase_close

Закрытие БД dBase

bool dbase_close (int dbase_identifier)

dbase_pack

Обновление БД dBase

bool dbase_pack (int dbase_identifier)

При этом удаляются все записи, помеченные с помощью dbase_ delete_record().

dbase_add_record

Добавление записи

bool dbase_add_record (Int dbase_identifier, array record)

Добавляет запись, поля которой содержатся в массиве record в БД. Если число полей записи не соответствует числу полей в БД, добавление не производится и функция возвращает FAbSE.

dbase_replace_record

Замена Записи

bool dbase_replace_record (int dbase_identifier. array record, int dbase_record_number)

Заменяет запись (с номером dbase_record_number), поля которой содержатся в массиве record. Если число полей записи не соответствует числу полей в БД, добавление не производится и функция возвращает FALSF.

Номера записей лежат в пределах от 1 до значения, возвращенного / dbase_numrecords().

dbase_delete_record

Удаление записи

bool dbase_delete_record (int dbasejidentifier. int record)

Помечает запись с номером record для удаления последующим вызовом dbase_pack().

dbase_get_record

Получение записи

array dbase_get_record (int dbasejdentifier, int record)

Возвращает массив, содержащий поля записи с номером record. Массив индексируется начиная с 0 и имеет элемент с индексом «deleted», равный 1, если запись была удалена (см. dbase_delete_record()). Каждое поле преобразуется к соответствующему типу РНР. (Даты сохраняются как строки.)

dbase_get_record_with_names

Занесение записи в ассоциативный массив

array dbase get_record_with_names (int dbase_identifier, int record)

Функция подобна dbase_get_record(), но вместо числовых индексов используются имена полей.

dbase_numrecords

Установление числа записей БД

int dbasejiumrecords (int dbase_identifier)

При обращении к записям БД их возможные номера лежат в пределах от 1 до значения, возвращаемого данной функцией.

dbase_numfields

Установление числа полей БД

int dbasejiumfields (Int dbase_identifier)

При обращении к полям записи их возможные номера лежат в пределах от 0 до значения, возвращаемого данной функцией, уменьшенного на единицу.

$гес = dbase_get_record($db. Srecno);
$nf = dbase_numfields($db): for ($1=0; $1 < $nf; $i++)
{ print $rec[$i]."<br>\n". } /*

DBM

Эта ipynna функций позволяет манипулировать записями в dbm-БД. ^ Этот тип БД поддерживается системными библиотеками Berkeley DB, GDBM наряду со встроенной поддержкой «плоских файлов». Данные в них сохраняются в виде пар «имя/значение».

$dbm = dbmopen ("lastseen". "w");
if (dbmexists ($dbm. $usend)) {
$last_seen = dbmfetch ($dbm. Susend); } else {
dbminsert (Sdbm. Susend. time()); }
do_stuff():
dbmreplace ($dbm. Susend. time()):
dbmclose ($dbm);

dbmopen

Открытие БД DBM

int dbmopen (string filename, string flags)

Первый аргумент содержит полное имя DBM-файла БД, а второй — режим открытия: «г», «w», «n», «с» соответственно для чтения, для

чтения и записи, создание новой БД (для чтения и записи), добавление в имеющуюся БД или ее создание.

Возвращает дескриптор БД, используемый всеми последующими функциями, или FALSE — при ошибке.

При использовании поддержки NDBM, NDBM фактически создает файлы filename.dir и filename.pag. GDBM (как и встроенная библиотека поддержки «плоских файлов») использует только один файл, a Berkeley DB создает файл fllename.db. Заметьте: РНР самостоятельно блокирует файл в дополнение к тому, что он может блокироваться библиотекой DBM. РНР не удаляет файлы .Ick, которые создает.

dbmclose

Закрытие БД DBM

bool dbmclose (int dbm_identifier)

Разблокирует и закрывает открытую БД.

dbmexists

Проверка существования имени

bool dbmexists (int dbm_identifier, string key)

Возвращает TRUE, если имеется значение с именем key, или FALSE - при ошибке.

dbmfetch

Получение значения элемента

string dbmfetch (int dbirMdentifier, string key)

Возвращает значение для имени key.

dbminsert

Добавление элемента

int dbminsert (int dbm_identifier, string key, string value)

Возвращает -1, если БД была открыта только для чтения; 0, если добавление было успешно выполнено; и 1, если указанный элемент уже существует (для замены используйте dbmreplace()).

dbmreplace

Замена значения

bool dbmreplace (int dbm_identifier, string key. string value) Если указанного элемента key не существовало, он создается.

dbmdelete

Удаление элемента

boo! dbmdelete (int dbnMdentifier, string key)

Возвращает FALSE, если элемент key в БД не присутствует.

dbmfirstkey

Получение имени первого элемента

string dbmfirstkey (int dbm_identifier)

Порядок элементов не гарантируется (так как могут использоваться внутренние хеш-таблицы).

dbmnextkey

Получение следующего элемента

string dbmnextkey (int dbm_identifier, string key)

В примере демонстрируется, как можно получить все значения БД:

$key = dbmfirstkey (Sdbmjid). while ($key) {
echo "$key = " . dbmfetch (Sdbmjd. $key) . "\n":
$key = dbmnextkey (Sdbmjd. $key)

dblist

Получение описания используемой библиотеки DBM I

string dblist (void)

Абстракция уровня dbm

Эти функции предназначены для работы с разновидностями Berkeley DB. Фактически поддержка ограничена современными подобиями Slcepycat Software DB2 (не путайте с IBM DB2, использующей интерфейс ODBC).

Действие некоторых функций различается в зависимости от реализации БД. Например, функции dba_optimize() и dba_sync() действуют согласно описанию, но могут быть совершенно бесполезны для некоторых видов БД.

Чтобы добавить поддержку ниже перечисленных БД в РНР, используйте указанные параметры —with сценария конфигурирования configure.

  • Dbm — начальная версия Berkeley DB. Постарайтесь ее не использовать из-за проблем совместимости (- -with-dbm).
  • Ndbm — новый и более удобный тип, нежели dbm. Но имеет многие недостатки dbm (--with-ndbm).
  • Gdbra — GNU database manager (ftp://ftp.gnu.org/pub/gnu/gdbm/) (--with-gdbm).
  • DB2 — Sleepycat Software's DB2 (http://www.steepycat.com/). Описывается как «высокоскоростная, подходящая как для клиентских, так и для клиент-серверных приложений». Использует бинарные деревья вместо хеш-таблиц (--with-db2).
  • DB3 — Sleepycat Software's DB3 (- -with-db3).
  • Cdb — «быстрая, облегченная, для хранения констант»; предоставляет доступ только для чтения (- -with-cdb).

php $id = dba_open ("/Imp/test.db", "n". "db2').
if (!$id) { echo "dba_open failed\n": exit: }
1 dba_replace ("key". "This TS an example!", Sid):
/ if (dba_exists ("key", $id)) {
echo dba_fetch ("key", $nd): dba_delete ("key", $id): }
dba_sync($id): dba_close($id): ?>

DBA позволяет работать с двоичными данными и ограничена только возможностями БД. БД, использующие файлы, должны предоставлять возможность указания режима открытия файла БД (или его создания), и обычно это указывается в аргументе функций dba_open() и dba_popen().

Получить последовательно все содержащиеся в БД элементы можно, используя функции dba_firstkey() и dba_nextkey(). He изменяйте БД во время просмотра.

<?php i .. .open database .
$key - dba_firstkey (Sid):
while ($key ' = FALSE) {
If (.,.){ # запомнить имя для последующей
операции $handle_later[] = $'<еу: }
$key = dba nextkey (Sid): }
for ($1 = 0: $1 < count($handle_iater);
$i++) dbajJelete ($handle_later[$i]. $id): ?>

dba_open

Открытие БД

Int dba_open (string path, string mode, string handler [, ...])

Открывает содержащуюся в файле path БД типа handler в режиме mode, который .может принимать следующие значения: «г» для чтения, «w» для чтения и записи, «с» для открытия уже существующей (или i создания отсутствующей БД) с доступом для чтения и записи и «n» для создания файла БД заново и открытия его для чтения и записи. Дополнительные аргументы могут указываться для некоторых БД при необходимости. Функция возвращает дескриптор открытой БД / (необходимый последующим функциям для выполнения операций f, с БД) или, при ошибке, FALSE.

См. также: dba_popen(), dba_close().

dba_close

Закрытие БД

void dba_close (int handle)

См. также: dba_open() и dba_popen().

dba_popen

Устойчивое открытие БД

int dba_popen (string path, string mode, string handler [, ...])

Функция подобна dba_open(), но подключение не закрывается при завершении сценария, а остается действительным для последующего использования.

См. также dba_close().

dba_exists

Проверка наличия элемента в БД

bool dba_exists (string key. int handle)

Возвращает TRUE, если элемент с именем key имеется в БД handle FALSE в противном случае или при ошибке.

См. также: dba fetch(), dba_delete(), dba_insert() и dba_replace().

dba_firstkey

Возвращение имени первого элемента БД string dba_firstkey (int handle)

См. также Dba_nextkey().

dba_nextkey

Возвращение имени следующего элемента БД string dbajnextkey (int handle)

См. также dba_firstkey().

dba_fetch

Получение значения указанного элемента

string dba_fetch (string key, int handle)

См. также: dba_exists(), dba_delete(), dba_insert() и dba_replace().

dba_insert

Добавление элемента в БД

boo! dba_insert (string key, string value, int handle)

Если элемент с именем key уже присутствует в БД, операция не вы полняется. Возвращает TRUE пли FALSE — при ошибке.

См. также: dba_exists(), dba_delete(), dba_fetch(), dba_replace().

dba_replace

Замена или добавление элемента

boo! dba_replace (string key, string value, int handle)

Возвращает TRUE или FALSE — при ошибке.

См. также: dba_exists(), dba_delete(), dba_fetch() и dba_insert().

dba_delete

Удаление элемента

string dba_delete (string key, int handle)

Возвращает TRUE или FALSE — при ошибке.

См. также: dba_exists(), dba_fetch(), dba_insert() и dba_replace().

dba_optimize

Оптимизация БД

bool dba_optimfze (int handle)

Возвращает TRUE пли FALSE — при ошибке.

См. также dba_sync().

dba_sync

Синхронизация изменений в БД

boo! dba_sync (int handle) .

Обычно физически синхронизация изменений происходит сохранением файла на диск. Если эту операцию не выполнять, изменения БД будут потеряны.

Возвращает TRUE или FALSE — при ошибке.

См. также dba_optimize().

filePro

Функции позволяют читать данные БД filePro.

См. также http://www. fiteproplus.com/.

filepro

Чтение и проверка map-файла

booll filepro (string directory)

Map-файл содержит информацию о БД и ее структуре. Так как никакой блокировки не выполняется, постарайтесь не модифицировать БД, открывая се в РНР.

filepro_fieldcount

Получение информации о числе полей в БД int filepro_fieldcount(void);

См. также filepro().

filepro_rowcount

Получение информации о числе записей в БД filePro

int filepro_rowcount(void);

См. также filepro().

filepro_retrieve

Извлечение данных

string filepro retrieve (int rowjiumber, int field_number)

Возвращает данные поля, указанного номером fieldjiumber для записи rowjiumber.

filepro_fieldname

Получение имени поля

string filepro_fieldname (int field_number)

filepro_fieldtype

Определение типа поля

string fi]epro_fieldtype (int field_number)

filepro-fieldwidth

Определение размера поля

int filepro_fie1dwidth (int field_number)

Ovrimos SQL

Ovrimos SQL Server — это клиент-серверная реляционная БД с поддержкой быстрых транзакций и "web-возможностями (http://www. ovrimos.com/). Для поддержки ovrimos в РНР необходимо скомпилировать его с параметром конфигурирования -with-ovrimos. Также необходимо установить библиотеку sqlcli, входящую я комплект поставки Ovrimos SQL Server.

<?php

Sconn = ovrTnos_connect(" server, сот;" "800Г. "admin", "passwrd").

if ($conn != 0) { echo ("Connection ok!"),
// select from a system tdble $res = ovnmos_exec (Iconn.
"select table_id. tablejtame from sys.tables"),
if ($res != 0) { echo "Statement ok!": ovrimos result_all ($res).
ovnmos_free_result ($res): } ovrimos close(Sconn). } ?>

ovrimos_connect

Подключение к серверу и выбор БД

int ovrimos_connect (string host, string db. string user, string password)

Возвращает дескриптор подключения или FALSE — при ошибке. В аргументе host указывается имя сервера или его IP-адрес, в db указывается либо имя БД, либо номер порта подключения. Также указываются имя пользователя и его пароль.

ovrimos_close

Закрытие указанного подключения

void ovrimos_close (int connection)

Все незавершенные транзакции отменяются.

ovrimos_close_all

Закрытие всех подключений

void ovrimos_close_a"ll (void)

Все незавершенные транзакции отменяются.

ovrimos_cursor

Получение типа курсора

int ovrimos_cursor (int resulted)

Полезно при выполнении позиционированных обновлений или удалениях.

ovrimos_longreadlen

Установка числа возвращаемых байтов для длинных полей int ovriraos_longreadlen (int result_id, int length)

Для полей типа LONG VARCHAR и LONG VARBINARY, по умолчанию, возвращается 0 байтов, но можно установить произвольное значение в аргументе length.

ovrimos_prepare

Подготовка запроса

int ovrimos_prepare (int connection_id, string query)

Возвращает FALSE (при ошибке) или дескриптор запроса, используемый для его последующего исполнения функцией ovrimos_execute().

<?php $conn=ovrimos_connect
("dbjiost". "8001". "admin", "password");
if ($conn'=0) { echo "Connection ok!";
$res=ovrimos_prepare ($conn.
"select tablejd. table_name from sys.tables
where table_id=l"); if ($res ' = 0) {
echo "Prepare ok!"; if (ovnmos_execute ($res))
{ echo "Execute ok!\n". ovnmos_result_all ($res);
) else { echo "Execute not ok!"; }
ovnmos_free_result ($res): } else {
echo "Prepare not ok!\n": } ovnmos_close (Sconn);} ?>

ovrimos_execute

Выполнение подготовленного запроса

int ovrimos_execute (int result_id [, array parameters_array])

Запрос должен быть предварительно подготовлен функцией ovrimos_ preparet). Возвращает TRUE или FALSE — при ошибке. Если запрос имеет параметры (обозначенные знаком вопроса), их значения передаются в массиве parameters_array.

ovrimos_exec

Выполнение запроса

int ovrimos_exec (int connection_id, string query)

Возвращает дескриптор возвращенного набора записей или FALSE - при ошибке. Запрос не должен содержать параметров.

ovrimos_num_rows

Получение числа измененных записей в БД

int ovrimos_num_rows (int result_id)

Функция возвращает число записей, которые были изменены запросом.

<?php Sconn = ovrimos_connect
("dbjiost". "8001". "admin", "password").
if ($conn i= 0) { echo "Connection ok!":
Sres - ovrimos_exec (Sconn. "update test set i=5"):
if ($res != 0) { echo "Statement ok!":
echo ovrimos_num_rows ($res).
" Записей изменено \п": ovnmos_free_result (Sres): }
ovrimos_close (Sconn): } ?>

ovrimos_num_fields

Получение числа полей, возвращенных запросом

int ovrimos_num_fields (int result_id)

ovrimos_fetch_into

Занесение записи в массив

int ovrimos_fetch_into (int resu!t_id, array resu!t_array [, string how [, int rownumber]])

Функция сохраняет поля записи в массиве result_array, который должен передаваться по ссылке. Какая запись будет сохранена, указывается в аргументе how, который может принимать одно из значений: «Next» (по умолчанию), «Prev», «First», «Last», «Absolute» (для этого случая требуется указать номер записи в аргументе rownumber). Регистр не учитывается. Возвращает TRUE или FALSE — при ошибке.

<?php $conn=ovrimos_connect
("neptune", "8001". "admin", "password");
if ($conn!=0) { echo "Connection ok":
$res=ovrimos_exec (Sconn."select t_id. t_name from tbl"):
if ($res != 0) {
echo "Statement ok!"; if (ovrimos_fetch_into
($res. &Srow)) { list ($table_id. $table_name)
= $row. echo "t_id=".$table_id.". tjiame=",
$table_name."\n"; if
(ovnmos_fetch_into ($res. &$row))
{ / list ($table_id, $table_name) = $row:
echo "t_id=".$table_id.". t_name=",$table_name."\n"; j
} else { \. echo "Next; error\n"; } else {
echo "First; error\n"; } ovnmos_free result ($res); }
ovnmos_close ($conn); ?>

ovrimos_fetch_row

Получение записи

int ovrimos_fetch_row (int result_id [, int how [, int rowjiumber]])

Выбирает запись из возвращенных запросом для того, чтобы ее данные можно было получить функцией ovrimos_resu"lt(). Возвращает TRUE или FALSE — при ошибке.

<?рhр Sconn = ovrimos_connect
("remote.host". "8001". "admin", "password");
if (Sconn !- 0) { echo "Connection ok!";
$res=ovrimos_exec ($conn, "select t_id. t_name from tbl"):
if ($res != 0) { echo "Statement ok!":
if (ovnmos_fetch_row ($res. "First")) { $table_id = ovrimos_result ($res. 1): $table_name = ovrimos_resu1t ($res. 2): echo "t_id=" $table_id.".
t_name=".$table_name."\n"; if
(ovrimos_fetch_row ($res. "Next")) {
$table_id = ovnmos_result ($res. "t_id"):
$t_name = ovrimos_result ($res. "t_name");
echo "t_id=" Stable_id ". t_name=" Stjname "\n";
} else { echo "Next errorXn": } } else {
echo "First- error\n". }
ovnmos_free_result ($res); } ovnmos_close
(Sconn);

ovrimos_result

Получение поля записи

int ovrimos_result (int resultjid, mixed field)

Возвращает поле записи, возвращенной запросом. Поле может быть указано его именем (или порядковым номером, начиная с 1) в аргументе field. Запись должна быть предварительно выбрана функцией ovrimos_fetch_row().

ovrimos_result_all

Распечатка результата запроса в таблице HTML

int ovrimos_result_all (int resultjd [, string format])

Возвращает TRUE или FALSE — при ошибке.

<?php Sconn = ovnmos_connect
("db_host". "8001". "admin", "password");
if (Sconn != 0) { echo "Connection ok!";
$res = ovrimos_prepare
(Sconn. "SELECT tablejid. table_name
FROM sys.tables WHERE tablejd = 7");
if (Sres != 0) { echo "Prepare ok!";
if (ovnmos_execute (ires. array(3))J {
ovrimos_result_all (Sres); } else {
erho "Fxecute not ok!": }
ovnmos_free_result (Srts); } else {
echo "Prepare not ok!\n". } ovnmos_close
(Sconn): } ?>

Далее приводится расширенная версия приведенного выше сценария, выводящая метаинформацию.

Example 2. Ovnmos_result_all with meta-information
<?php Sconn - ovrimos_connect
("db_host". "8001". "admin", "password"):
if (Sconn '= 0) { echo "Connection ok.1".
$reb ^ ovnmos_exec (Sconn.
"select table_id. tablejiame from
sys.tables where tabloid = 1") if (Sres != 0) { ,
echo "Statement ok! cu>-sor="
ovrimos_cursor (Sres) "\p"; f
Scolnb = ovnmos_num_fields (Sres):
echo "Полей = " .Scolnb."\n". [
for ($1=1: Si<=$colnb: $i++) {
Sname = ovrimos_field_name (Sres. Si);
Stype = ovnmos_field_type (Sres. Si).
Slen = ovrimos_field_len (Sres. Si):
echo "Поле Si Имя: Sname
Тип: Stype разиер=" $!РП."\П"; }
ovnmos_result_all (Sres).
ovrimos_free_result (Sres): } ovrimos_close (Sconn). } ?>

ovrimos_field_num

Получение порядкового номера поля

int ovrimos_field_num (Int result_id. string fieldjiame)

ovrimos_field_name

Получение имени поля

int ovrimos_field_name (int result^id, int fieldjiumber)

Поле указывается его порядковым (начиная с 1) номером fieldjiumber.

ovrimos_field_type

Получение типа поля

int ovrimos_field_type (int resu!t_id, int field_number)

ovrimos_field_len

Получение размера поля

int ovrimos_fieldjen (int result_id, int field_number)

ovrimos_free_result

Уничтожение набора возвращенных записей

int ovrimos_free_result (int result_id)

ovrimos_commit

Завершение транзакции

int ovrimos_commit (int connection_id)

ovrimos_rollback

Отмена транзакции

int ovrimos_rollback (int connection_id)

Взаимодействие с базами данных

страницы в данном разделе 
 Взаимодействие с базами данных   


Разделы
Околокомпьютерная литература (375)
Программирование (102)
Программы (75)
ОС и Сети (49)
Интернет (29)
Аппаратное обеспечение (16)
Базы данных (6)
Flutter
React Native
Xamarin

Содержание сайта (выборка)
Apache
Протоколы TCP/IP (принципы, протоколы и архитектура)

PHP, PELR, JSP
PHP
JavaServer Pages (JSP)

Базы данных
Основы mysql
СУБД INFORMIX
СУБД POSTGRES
Основы проектирования реляционных баз данных

HTML, javascript
Спецификация HTML 4.01
Каскадные Таблицы Стилей, Уровень 2
Клиентский JavaScript. Справочник.
JavaScript руководство пользователя
Серверный JavaScript 1.4. Руководство по Использованию.

Паскаль, C, C++, C#
GCC (примеры)
FAQ Валентинa Озеровa DELPHI
C





 
©  programming-lang.com  справочник программиста
©  http://ekb.programming-lang.com/tlg/  бесплатный телеграм бот
©  http://ekb.programming-lang.com/tlg/  бесплатный телеграм бот
React Native
demo forum