Информационные технологииStfw.Ru 🔍

InterBase

Взаимодействие с базами данных
🕛 01.11.2006, 13:57
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(),
?>

Учебник по основам PHP   Теги:

Читать IT-новости в Telegram
Информационные технологии
Мы в соцсетях ✉