CXIII. Paradox File Access

Introduction

Warning

This extension is EXPERIMENTAL. The behaviour of this extension -- including the names of its functions and anything else documented about this extension -- may change without notice in a future release of PHP. Use this extension at your own risk.

This module allows to read and write Paradox databases, primary index files and blob files. Write support has been proven to be quite reliable, though due to lack of documentation the produced files may not in any case be readable by other applications. Encrypted databases can be read without specifying a password if pxlib >= 0.5.0 is used.

Note: This module is also in development and may change, though I don't expect major changes to the API.

Requirements

You need at least PHP 5.0.0 and pxlib >= 0.4.4 for the basic set of functions. Some newer functions are only available with pxlib >= 0.6.0. Reading and writing of encrypted databases requires at least pxlib >= 0.5.0. The paradox library (pxlib) is available at http://pxlib.sourceforge.net.

Installation

A short installation note: just type
$ pear install paradox
in your console. Make sure you have pxlib installed before. If you install pxlib from an rpm or debian package, do not forget to install the development package as well.

Runtime Configuration

This extension has no configuration directives defined in php.ini.

Object oriented API

The paradox extension provides also an object oriented API. It consists of only one class called paradox_db. Its methods only differ from the functions in its name and of course the missing first parameter. The following table will list all methods and its equivalent functions.

Table 1. Methods of class paradox_db

Name of methodEquivalent function
Constructorpx_new()
Destructorpx_delete()
open_fp()px_open_fp()
create_fp()px_create_fp()
close()px_close()
numrecords()px_numrecords()
numfields()px_numfields()
get_record()px_get_record()
put_record()px_put_record()
retrieve_record()px_retrieve_record()
delete_record()px_delete_record()
insert_record()px_insert_record()
update_record()px_update_record()
get_field()px_get_field()
get_schema()px_get_schema()
get_info()px_get_info()
set_parameter()px_set_parameter()
get_parameter()px_get_parameter()
set_value()px_set_value()
get_value()px_get_value()
get_info()px_get_info()
set_targetencoding()px_set_targetencoding()
set_tablename()px_set_tablename()
set_blob_file()px_set_blob_file()
date2string()px_date2string()
timestamp2string()px_timestamp2string()

Predefined Constants

The constants below are defined by this extension, and will only be available when the extension has either been compiled into PHP or dynamically loaded at runtime.

The following two tables lists all constants defined by the paradox extension.

Table 2. Contants for field types

NameMeaning
PX_FIELD_ALPHACharacter data with fixed length
PX_FIELD_DATEDate, number of days since 1.1.0000
PX_FIELD_SHORTShort integer (2 Bytes)
PX_FIELD_LONGLong integer (4 Bytes)
PX_FIELD_CURRENCYsame as PX_FIELD_NUMBER
PX_FIELD_NUMBERDouble
PX_FIELD_LOGICALBoolean
PX_FIELD_MEMOBLOBBinary large object
PX_FIELD_BLOBBinary large object (not supported)
PX_FIELD_FMTMEMOBLOBBinary large object
PX_FIELD_OLEOLE object (basically a blob, not supported)
PX_FIELD_GRAPHICGraphic (basically a blob, not supported)
PX_FIELD_TIMEtime, number of milli seconds since midnight
PX_FIELD_TIMESTAMPtimestamp, number of milli seconds since 1.1.0000
PX_FIELD_AUTOINCAuto incrementing interger (like PX_FIELD_LONG)
PX_FIELD_BCDDecimal number stored in bcd format (not supported)
PX_FIELD_BYTESArray of Bytes with not more than 255 bytes (not supported)
PX_KEYTOLOWERTurn all field names into lower case
PX_KEYTOUPPERTurn all field names into upper case

Table 3. Contants for file types

NameMeaning
PX_FILE_INDEX_DBIndexed database
PX_FILE_PRIM_INDEXPrimary index
PX_FILE_NON_INDEX_DBNone indexed database
PX_FILE_NON_INC_SEC_INDEXNone incremental secondary index
PX_FILE_SEC_INDEXSecondary index
PX_FILE_INC_SEC_INDEXIncremental secondary index
PX_FILE_NON_INC_SEC_INDEX_GNon incremental secondary index
PX_FILE_SEC_INDEX_GSecondary index
PX_FILE_INC_SEC_INDEX_GNon incremental secondary index

Table of Contents
px_close -- Closes a paradox database
px_create_fp -- Create a new paradox database
px_date2string --  Converts a date into a string.
px_delete_record -- Deletes record from paradox database
px_delete -- Deletes resource of paradox database
px_get_field -- Returns the specification of a single field
px_get_info -- Return lots of information about a paradox file
px_get_parameter -- Gets a parameter
px_get_record -- Returns record of paradox database
px_get_schema -- Returns the database schema
px_get_value -- Gets a value
px_insert_record -- Inserts record into paradox database
px_new -- Create a new paradox object
px_numfields -- Returns number of fields in a database
px_numrecords -- Returns number of records in a database
px_open_fp -- Open paradox database
px_put_record -- Stores record into paradox database
px_retrieve_record -- Returns record of paradox database
px_set_blob_file -- Sets the file where blobs are read from
px_set_parameter -- Sets a parameter
px_set_tablename -- Sets the name of a table (deprecated)
px_set_targetencoding -- Sets the encoding for character fields (deprecated)
px_set_value -- Sets a value
px_timestamp2string --  Converts the timestamp into a string.
px_update_record -- Updates record in paradox database