dbase_get_record_with_names
(PHP 4, PHP 5)
dbase_get_record_with_names — Получает запись из базы данных в виде ассоциативного массива
Описание
$dbase_identifier
, int $record_number
)Получает запись из базы данных dBase в виде ассоциативного массива (вместе с именами соответствующих полей).
Список параметров
-
dbase_identifier
-
Идентификатор базы данных, возвращаемый функцией dbase_open() или dbase_create().
-
record_number
-
Индекс записи. (Здесь соответствует физическому номеру записи. - прим. пер.)
Возвращаемые значения
Ассоциативный массив с данными строки. Массив будет включать в себя ключ deleted который равен 1, если запись помечена на удаление (см. dbase_delete_record()). Возвращает и пустые записи.
Каждое поле конвертируется в соответствующий тип PHP, за исключением:
- Даты остаются в виде строк.
- Целые числа, которые могли бы привести к переполнению (> 32 бита) возвращаются в виде строк.
В случае ошибки, dbase_get_record_with_names() возвращает FALSE
.
Примеры
Пример #1 Список всех зарегистрированных пользователей в базе данных
<?php
// открываем базу в режиме чтения
$db = dbase_open('/tmp/test.dbf', 0);
if ($db) {
$record_numbers = dbase_numrecords($db);
for ($i = 1; $i <= $record_numbers; $i++) {
$row = dbase_get_record_with_names($db, $i);
if ($row['ismember'] == 1) {
echo "Member #$i: " . trim($row['name']) . "\n";
}
}
}
// Прим. пер. -
// к полученным с помощью dbase_get_record_with_names значениям записи
// обращаемся по имени - $row['ismember'],
// а в случае с dbase_get_record к значениям записи
// обращаемся по номеру - $row[4]
?>
Коментарии
I would like to emphasize that record numbers begin with 1, not 0. So, this is wrong:
<?php
$recCnt = dbase_numrecords($fh);
for ($recNum = 0; $recNum < $recCnt; $recNum++) {
// wrong! first record will fail
$record = dbase_get_record_with_names($fh, $recNum);
}
?>
This is right:
<?php
$recCnt = dbase_numrecords($fh);
for ($recNum = 1; $recNum <= $recCnt; $recNum++) {
// right! record #s begin with 1, don't forget <=
$record = dbase_get_record_with_names($fh, $recNum);
}
?>
$foo_db = dbase_open ( 'foo.dbf', 0);
if ($foo_db) {
$rn = dbase_numrecords($foo_db);
echo "Record 0: ";
$test = dbase_get_record_with_names($foo_db, 0);
echo $test['deleted'] . " FOO BAR: '" . $test['BAR'] . "'\n";
echo "Record n+1: ";
$test = dbase_get_record_with_names($foo_db, $rn+1);
echo $test['deleted'] . " FOO BAR: '" . $test['BAR'] . "'\n";
}
Gives:
Record 0: 0 FOO BAR: ' '
Record n+1:
Warning: Tried to read bad record 30 in ./DisplayAccounts.php on line 21
FOO BAR: ''
0 is not an error record, it's just empty - and actually, not quite empty, as you see BAR got a single space.