Php dbase add record

dbase_add_record

The database resource, returned by dbase_open() or dbase_create() .

An indexed array of data. The number of items must be equal to the number of fields in the database, otherwise dbase_add_record() will fail.

Note:

If you’re using dbase_get_record() return value for this parameter, remember to reset the key named deleted .

Return Values

Returns true on success or false on failure.

Changelog

Examples

Example #1 Inserting a record in a dBase database

// open in read-write mode
$db = dbase_open ( ‘/tmp/test.dbf’ , 2 );

if ( $db ) dbase_add_record ( $db , array(
date ( ‘Ymd’ ),
‘Maxim Topolov’ ,
’23’ ,
‘max@example.com’ ,
‘T’ ));
dbase_close ( $db );
>

See Also

User Contributed Notes 1 note

Field type incompatible inputs can cause PHP to crash or strange errors to occur. After finding that out it was easy to fill also «big» dbase-files with size bigger than 15 MB. Don’t let your enthusiasm be broken by inexact error messages! 🙂

  • dBase Functions
    • dbase_​add_​record
    • dbase_​close
    • dbase_​create
    • dbase_​delete_​record
    • dbase_​get_​header_​info
    • dbase_​get_​record_​with_​names
    • dbase_​get_​record
    • dbase_​numfields
    • dbase_​numrecords
    • dbase_​open
    • dbase_​pack
    • dbase_​replace_​record

    Источник

    dBase Functions

    Many examples in this reference require a dBase database. We will use /tmp/test.dbf that will be created in the example of dbase_create() .

    Table of Contents

    • dbase_add_record — Adds a record to a database
    • dbase_close — Closes a database
    • dbase_create — Creates a database
    • dbase_delete_record — Deletes a record from a database
    • dbase_get_header_info — Gets the header info of a database
    • dbase_get_record_with_names — Gets a record from a database as an associative array
    • dbase_get_record — Gets a record from a database as an indexed array
    • dbase_numfields — Gets the number of fields of a database
    • dbase_numrecords — Gets the number of records in a database
    • dbase_open — Opens a database
    • dbase_pack — Packs a database
    • dbase_replace_record — Replaces a record in a database

    User Contributed Notes 2 notes

    I know lots of you dosent really use dbase, but i’ve builded a class to help the one how dose.
    (sorry for bad english)

    set_time_limit ( 0 );
    // site_path defined by parent
    require_once ( SITE_PATH . ‘/server/php/libs/dbase/handler.php’ );

    /* DBase (dbf)
    * manage dbf files, exports and search functionality
    * with buildin optimizers for fast performance
    */

    class DBase
    private $handler = false ;
    private $searchopt = array (); // Search optimizer

    private function unload ()
    if ( $this -> handler !== false )
    unset ( $this -> handler );
    >

    public function __construct ( $file = false )
    if ( $file !== false )
    $this -> load ( $file );
    >

    public function __destruct ()
    $this -> unload ();
    >

    public function load ( $file )
    $resource = dbase_open ( $file , 0 );
    $this -> handler = new DBase_Handler ( $resource );

    /* Search
    * search for string inside header
    * returns record number
    * false returned if not found or error occurred
    * limit_results gets int or false, limit_results equels one will limit the
    * search results for one result only, false for no limit
    */
    public function search ( $headerText , $string , $limit_results = false , $handler = false )
    if ( $handler === false )
    $handler = $this -> handler ;

    if ( $this -> searchopt [ $headerText ][ $string ])
    return $this -> searchopt [ $headerText ][ $string ];
    else
    $size = $handler -> getSize ();
    if ( ( $headerNumber = $handler -> getHeaderNumber ( $headerText ) ) !== false )
    $results = array ();
    for ( $i = 1 ; $i < $size ; $i ++)
    $record = $handler -> getRecord ( $i , false ); // Disabled optimizer to prevent memory overflow
    if ( trim ( $record [ $headerNumber ]) == $string )
    $results [] = $i ;

    if ( sizeof ( $results ) > 0 )
    $this -> searchopt [ $headerText ][ $string ] = $results ;
    return $this -> search ( $headerText , $string , $handler );
    >

    return false ;
    > else
    return false ;
    >
    >
    >

    /* DBase Handler (dbf)
    * handles dbase resource
    */

    class DBase_Handler
    private $resource ;
    private $size ; // Records Count
    private $header = array ();
    private $dataopt = array (); // Data optimizer

    private function setHeader ()
    $this -> header = dbase_get_header_info ( $this -> resource );
    >

    public function __construct ( $resource )
    $this -> resource = $resource ;
    $this -> setHeader ();
    $this -> size = dbase_numrecords ( $this -> resource );
    >

    public function __destruct ()
    dbase_close ( $this -> resource );
    >

    public function getRecord ( $record_number , $dataopt = true )
    if ( $record_number > $this -> size )
    return false ;
    else
    if ( $this -> dataopt [ $record_number ])
    return $this -> dataopt [ $record_number ];
    else
    $record = dbase_get_record ( $this -> resource , $record_number );
    if ( $dataopt === true ) // Data saving optimizer
    $this -> dataopt [ $record_number ] = $record ;
    return $this -> getRecord ( $record_number );
    > else
    return $record ;
    >
    >
    >

    public function getHeaderNumber ( $headerText )
    foreach ( $this -> header as $index => $header )
    if ( $header [ ‘name’ ] == $headerText )
    return $index ;
    break;
    >
    >

    public function getHeader ( $headerNumber )
    if ( $headerNumber header ))
    return $this -> header [ $headerNumber ];
    else
    return false ;
    >

    public function getSize ()
    return $this -> size ;
    >
    >

    Источник

    dBase

    Unfortunately the dbase functions are not compiled into my commercial server’s php and I needed to read some geo data in shape files, which include data in dbfs.

    So maybe this will help some others:

    function echo_dbf ( $dbfname ) <
    $fdbf = fopen ( $dbfname , ‘r’ );
    $fields = array();
    $buf = fread ( $fdbf , 32 );
    $header = unpack ( «VRecordCount/vFirstRecord/vRecordLength» , substr ( $buf , 4 , 8 ));
    echo ‘Header: ‘ . json_encode ( $header ). ‘
    ‘ ;
    $goon = true ;
    $unpackString = » ;
    while ( $goon && ! feof ( $fdbf )) < // read fields:
    $buf = fread ( $fdbf , 32 );
    if ( substr ( $buf , 0 , 1 )== chr ( 13 )) < $goon = false ;>// end of field list
    else <
    $field = unpack ( «a11fieldname/A1fieldtype/Voffset/Cfieldlen/Cfielddec» , substr ( $buf , 0 , 18 ));
    echo ‘Field: ‘ . json_encode ( $field ). ‘
    ‘ ;
    $unpackString .= «A $field [ fieldlen ] $field [ fieldname ] /» ;
    array_push ( $fields , $field );>>
    fseek ( $fdbf , $header [ ‘FirstRecord’ ]+ 1 ); // move back to the start of the first record (after the field definitions)
    for ( $i = 1 ; $i $buf = fread ( $fdbf , $header [ ‘RecordLength’ ]);
    $record = unpack ( $unpackString , $buf );
    echo ‘record: ‘ . json_encode ( $record ). ‘
    ‘ ;
    echo $i . $buf . ‘
    ‘ ;> //raw record
    fclose ( $fdbf ); >
    ?>

    This function simply dumps an entire file using echo and json_encode, so you can tweak it to your own needs. (eg random access would just be a matter of changing the seek to : fseek($fdbf, $header[‘FirstRecord’]+1 +($header[‘RecordLength’]* $desiredrecord0based); removing the for loop and returning $record

    This function doesn’t do any type conversion, but it does extract the type if you need to play with dates, or tidy up the numbers etc.

    So quick and dirty but maybe of use to somebody and illustrates the power of unpack.

    Источник

    dbase_add_record

    Ресурс базы данных, возвращаемый функцией dbase_open() или dbase_create() .

    Индексированный массив с данными. Количество элементов должно быть равно числу полей в базе данных, в противном случае dbase_add_record() не удастся выполнить.

    Замечание:

    Если вы используете в качестве параметра запись, которую вернула функция dbase_get_record() , не забудьте сбросить ключ deleted . (прим пер. — unset(record[‘deleted’]);

    Возвращаемые значения

    Возвращает true в случае успешного выполнения или false в случае возникновения ошибки.

    Список изменений

    Примеры

    Пример #1 Вставка записи в базу данных dBase

    // открыть БД в режиме чтения и записи
    $db = dbase_open ( ‘/tmp/test.dbf’ , 2 );

    if ( $db ) dbase_add_record ( $db , array(
    date ( ‘Ymd’ ),
    ‘Maxim Topolov’ ,
    ’23’ ,
    ‘max@example.com’ ,
    ‘T’ ));
    dbase_close ( $db );
    >

    Смотрите также

    User Contributed Notes 1 note

    Field type incompatible inputs can cause PHP to crash or strange errors to occur. After finding that out it was easy to fill also «big» dbase-files with size bigger than 15 MB. Don’t let your enthusiasm be broken by inexact error messages! 🙂

Оцените статью