chvila / php-xbase
使用PHP的简单解析器,用于处理*.dbf、*.fpt文件
1.0.51
2017-10-30 12:58 UTC
Requires
- php: >=5.3.0
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的专家,也不知道字段类型和版本的详细信息,因此库可能无法处理某些情况。如果您发现错误,请打开一个问题,并发送一个样本表,我可以重现您的问题,我将尽力帮助。