PHP.mk документација

dBase

Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.

book.dbase.php PHP.net прокси Преводот се освежува
Оригинал на PHP.net
Патека book.dbase.php Локална патека за оваа страница.
Извор php.net/manual/en Оригиналниот HTML се реупотребува и локално се стилизира.
Режим Прокси + превод во позадина Кодовите, табелите и белешките остануваат читливи во истиот тек.
dBase

Референца за `book.dbase.php` со подобрена типографија и навигација.

book.dbase.php

dBase

Вовед

Забелешка:

Овој екстензија е преместен во (достапно од PHP 7.2.0) repository and is no longer bundled with PHP as of PHP 5.3.0.

repository и повеќе не е вклучен со PHP од PHP 5.3.0.

Ги ескејпува специјалните знаци во стринг за употреба во SQL изјава

Овие функции ви овозможуваат пристап до записи зачувани во бази на податоци во формат dBase (dbf). Препорачуваме да не користите dBase датотеки како ваша продукциска база на податоци. Користете » SQLite или изберете кој било вистински SQL сервер наместо тоа; or » MySQL » Postgres

Безбедност: стандардниот сет на знаци

се вообичаени избори со PHP. Поддршката за dBase е тука за да ви овозможи да увезувате и извезувате податоци од и до вашата веб база на податоци, бидејќи формат на датотеката е општо разбран од Windows табеларни пресметки и организатори. flock()Од dbase 7.0.0 базите на податоци автоматски се заклучуваат преку

. Немало поддршка за заклучување порано, така што два истовремени веб сервер процеси кои модифицираат иста dBase датотека многу веројатно би ја уништиле вашата база на податоци. Ова може да се случи дури и со dbase 7.0.0+ на системи кои ги имплементираат заклучувањата на ниво на процес со мултитредирани SAPIs. dbase_pack().

dBase датотеките се едноставни секвенцијални датотеки со записи со фиксна должина. Записите се додаваат на крајот од датотеката, а избришаните записи се задржуваат додека не го повикате

Поддржани се само нивоата на dbf датотеки 3 (dBASE III+) - 5 (dBASE V). Типовите на достапни dBase полиња се:
Достапни типови на полиња Поле Формат dBase Тип
M Дополнителни информации n/a Memo
D Датум YYYYMMDD Овој тип не е поддржан од PHP, таквото поле ќе биде игнорирано
T DateTime YYYYMMDDhhmmss.uuu Должината на полето е ограничена на 8
N Број Број Мора да декларирате должина и прецизност (број на цифри по децималната точка).
F Пловечки Број со пловечка запирка Исто како N.
C Низа Низ Мора да декларирате должина. При преземање податоци, низата ќе биде дополнета со празни места од десната страна за да одговара на декларираната должина. Предолгите низи ќе бидат тивко скратени при складирање податоци.
L Буловска вредност T or Y for true, F or N for false, ? за неиницијализирано. Од dbase 7.0.0, се враќа како bool (true or false), или null за неиницијализирани полиња. Претходно, се враќаше како int (1 or 0).

Забелешка:

Од dbase 7.0.0 се поддржуваат полиња што може да бидат NULL за DBASE_TYPE_FOXPRO бази на податоци. Ако полето може да биде NULL, поминување null ќе го постави соодветното знаменце, а при подоцнежно преземање вредноста на полето ќе биде null.

Забелешка:

Нема поддршка за индекси или мемо полиња.

Белешки од корисници 1 белешка

Анонимен
пред 16 години
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:

<?php
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).'<br/>';
    $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).'<br/>';
            $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<=$header['RecordCount']; $i++) {
        $buf = fread($fdbf,$header['RecordLength']);
        $record=unpack($unpackString,$buf);
        echo 'record: '.json_encode($record).'<br/>';
        echo $i.$buf.'<br/>';} //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.

Erich
На оваа страница

Автоматски outline од активната документација.

Насловите ќе се појават тука по вчитување.

Попрегледно читање

Примерите, changelog табелите и user notes се визуелно издвоени за да не се губат во долгата содржина.

Брз совет Користи го outline-от Скокни директно на главните секции од активната страница.
Извор Оригиналниот линк останува достапен Кога ти треба целосен upstream context, отвори го PHP.net во нов tab.