PHP Velho Oeste 2024

dbase_get_record_with_names

(PHP 5 < 5.3.0, dbase 5, dbase 7)

dbase_get_record_with_names Obtém um registro do banco de dados como um array associativo.

Descrição

dbase_get_record_with_names(resource $database, int $number): array

Obtém um registro do banco de dados como um array associativo.

Parâmetros

database

Recurso de banco de dados, retornado por dbase_open() ou dbase_create().

number

O índice do registro entre 1 e dbase_numrecords($dbase_identifier).

Valor Retornado

Um array associativo com o registro. Isto também irá incluir uma chave chamada deleted a qual é definida como 1 se o registro foi marcado para exclusão (veja dbase_delete_record()). Portanto não é possível obter o valor de um campo com nome deleted com esta função.

Cada campo é convertido para o tipo PHP apropriado, exceto:

  • Datas são mantidas como strings.
  • Valores DateTime são convertidos em strings.
  • Números inteiros fora do intervalo PHP_INT_MIN..PHP_INT_MAX são retornados como strings.
  • Antes do dbase 7.0.0, os booleanos (L) eram convertidos em 1 ou 0.

Em caso de erro, dbase_get_record_with_names() irá retornar false.

Registro de Alterações

Versão Descrição
dbase 7.0.0 database agora é do tipo resource ao invés de int.

Exemplos

Exemplo #1 Listando todos os membros registrados no banco de dados

<?php
// open in read-only mode
$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";
}
}
}
?>

Veja Também

add a note add a note

User Contributed Notes 2 notes

up
2
bishop
18 years ago
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);
}
?>
up
-1
Anonymous
18 years ago
$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.
To Top