Database (dbm-style) Abstraction Layer (DBA)上

 

1.简介Database (dbm-style) Abstraction Layer

这些函数是建立在访问 Berkeley DB (伯克利数据库)的基础之上。

目前 PHP 支持的 DBA 数据库包括:

  1. dbm:柏克莱发展的最早期 DBA 数据库。
  2. ndbm:较新且较有弹性的 DBA。
  3. gdbm:GNU 发展的 DBA,ftp://ftp.gnu.org/pub/gnu/gdbm/
  4. db2:由 Sleepycat 软件开发的 DB2 (非 IBM 的 DB2),http://www.sleepycat.com
  5. db3:由 Sleepycat 软件开发的 DB3。
  6. db4:由 Sleepycat 软件开发的 DB4,从php4.3.2开始支持。
  7. cdb:这是 qmail 作者开发快速可靠的 DBA,http://cr.yp.to/cdb.html.
  8. cdb_make
  9. flatfile
  10. inifile
  11. qdbm

2.相关的函数

  • dba_close —关闭dba数据库
  • dba_delete —删除数据库中指定的key
  • dba_exists — 检查key是否存在
  • dba_fetch— 取得指定key的值
  • dba_firstkey — 获取第一个key
  • dba_handlers  —列出所有可用的handler
  • dba_insert— 插入一条记录
  • dba_key_split— Splits a key in string representation into array representation
  • dba_list — 列出所有打开的数据库
  • dba_nextkey — 获取下一个key
  • dba_open —打开数据库
  • dba_optimize — 优化数据库
  • dba_popen — 使用长链接打开数据库
  • dba_replace —替换或者插入一条记录
  • dba_sync — 数据库同步

3.函数说明和范例

3.1 dba_open()

3.1.1 说明:

resource dba_open ( string $path , string $mode [, string $handler [, mixed $... ]] 链接数据库

3.1.2 参数

string $path :打开数据库所在的目录。

string $mode : 打开的模式。第一个字符位置,'r’:读的方式; 'w’:写的方式; 'c’:读写方式,如果数据库不存在,则创建; 'n’:创建,以读写方式; 第二个字符位置,'l’:以锁定的方式,并生成一个.lck的文件; 'd’:锁定数据库自己。第三个字符位置:'t’:测试访问锁而且不想等待的时候,用此选项。

注意:对一个数据库文件,只能有一个人可以写操作。当dba数据库用在web服务或者多个需要写操作的时候,只能是一个接着一个,不能同时写,而且在写的时候,读也是不允许的。dba的扩展用锁来防止同时操作,请看下表:

 

DBA locking
already openmode = "rl"mode = "rlt"mode = "wl"mode = "wlt"mode = "rd"mode = "rdt"mode = "wd"mode = "wdt"
not openokokokokokokokok
mode = "rl"okokwaitfalseillegalillegalillegalillegal
mode = "wl"waitfalsewaitfalseillegalillegalillegalillegal
mode = "rd"illegalillegalillegalillegalokokwaitfalse
mode = "wd"illegalillegalillegalillegalwaitfalsewaitfalse

 

  • ok: the second call will be successfull. 第二次调用将会成功
  • wait: the second call waits until dba_close() is called for the first. 第二次调用会等待,直到调用dba_close() 时候
  • false: the second call returns false. 第二次调用会返回false
  • illegal: you must not mix "l" and "d" modifiers for mode parameter.         'l' 和 'd'禁止混合使用在模式参数中

string $handler:使用的数据库

3.1.3 返回值

成功返回handler, 失败返回 false

3.1.4 示例

//打开数据库test.db,使用的handler是db4
$dbh = dba_open( "./test.db", "c", "db4" );
if (!$dbh) {
     echo "Open db4 false./n";
     exit;
}

3.2 dba_insert()

3.2.1 说明
bool dba_insert ( string $key , string $value , resource $handle ) 插入一条记录
3.2.2 参数

string $key   key值,假如key存在的话,函数返回false

string $value 想要插入的值

resource $handle 数据库的handler, 通过dba_open() , dba_popen() 返回

3.2.3 返回值

如果成功则返回 TRUE,失败则返回 FALSE

3.2.4 示例

$dbh = dba_open( "./data/products", "c", "db4" )
        or die( "Couldn't open database" );
dba_insert( "Sonic Screwdriver", "23.20", $dbh);
dba_insert( "Tricorder", "55.50", $dbh);
dba_insert( "ORAC AI", "2200.50", $dbh);
dba_insert( "HAL 2000", "4500.50", $dbh);  dba_close( $dbh );

3.3 dba_fetch()

3.3.1 说明

string dba_fetch ( string $key , resource $handle )   通过指定的key获取数据

3.3.2 参数

string $key key值

resource $handle 数据库的handler,通过dba_open(), dba_popen() 返回

3.3.3 返回值

如果key对应的value值存在,返回data字符串,否则返回FALSE

3.3.4 示例

$dbh = dba_open( "./data/products", "c", "db4" )
        or die( "Couldn't open database" );
$tricorder = dba_fetch('Tricorder', $dbh);
dba_close($dbh);

3.4 dba_delete()

3.4.1 说明

bool dba_delete ( string $key , resource $handle ) 通过指定的key删除数据库记录

3.4.2 参数

string $key key值, 如果key不存在,返回false

resource $handle 数据库的handler, 通过调用 dba_open(), dba_popen() 返回

3.4.3 返回值

如果成功则返回 TRUE,失败则返回 FALSE

3.4.4 示例

$dbh = dba_open( "./data/products", "c", "db4" )
         or die( "Couldn't open database" );


$res_del = dba_delete('Tricorder', $dbh);

dba_close();


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值