chvila/php-xbase

使用PHP的简单解析器,用于处理*.dbf、*.fpt文件

1.0.51 2017-10-30 12:58 UTC

This package is not auto-updated.

Last update: 2024-09-29 03:57:58 UTC


README

这是一个处理类似dBase和FoxPro的dbf数据库的简单库。它是Erwin Kooi编写的PHPXbase类的移植版本,已更新为符合PSR-2代码规范,并针对性能和一些原始代码中的问题进行了调整。

安装

您可以通过Composer安装它

$ composer require hisamu/php-xbase

示例用法

<?php

use XBase\Table;

$table = new Table(dirname(__FILE__).'/test.dbf');

while ($record = $table->nextRecord()) {
    echo $record->my_column;
}

如果DB中的数据不是UTF-8,您可以指定一个字符集来转换数据

$table = new Table(dirname(__FILE__).'/test.dbf', null, 'CP1251');

还可以从专用文件中读取Memo。只需确保存在与主数据库同名的.fpt文件即可

性能

您可以将所需列的数组传递给构造函数,然后如果您的表中有您不使用的列,它们将不会被加载。这样,解析器可以运行得更快。

<?php

use XBase\Table;

$table = new Table(dirname(__FILE__).'/test.dbf', array('my_column', 'another_column'));

while ($record = $table->nextRecord()) {
    echo $record->my_column;
    echo $record->another_column;
}

如果您已经知道列的类型,还可以调用该字段的特定类型函数,这也会提高速度。

while ($record = $table->nextRecord()) {
    echo $record->getChar('my_column');
    echo $record->getDate('another_column');
}

写入数据

要打开表进行写入,您必须使用WritableTable对象,如下例所示

<?php

use XBase\WritableTable;

$table = new WritableTable(dirname(__FILE__).'/test.dbf'));
$table->openWrite();

for ($i = 0; $i < 10; $i++) {
    $record = $table->nextRecord();
    $record->field = 'string';
    $table->writeRecord();
}

# optional
$table->close();

故障排除

我不是dBase的专家,也不知道字段类型和版本的详细信息,因此库可能无法处理某些情况。如果您发现错误,请打开一个问题,并发送一个样本表,我可以重现您的问题,我将尽力帮助。