dBase
Взаимодействие с базами данных
🕛 01.11.2006, 14:01
Данная группа функций позволяет работать с данными БД 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". } /*