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)

 

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