频道直达 - 专题 - 新闻 - 基础 - 高级 - 安装 - 技巧 - 数据库 - 手册 - PHP - Linux - Java - MySQL - Apache - 麻辣堂 - 狼盟 - Rails社群 - 搜索 - 下载 - 开源 - 论坛
PHP开发资源网 主页>>高级应用>> 收藏此文 | 收藏本站 | 设为首页

PHP访问ACCESS的类

来源:www.phpres.com 作者:Angelover 出处:www.phpres.com 2007-8-6 19:12:38 进入讨论组
关 键 词: 访问 dbm if return false // key val true function

这是ACCESS的类

<?
Class AccessDBM
{
var $COUNT = 0;
var $VALUES = array();
var $FILE = "";
var $ERROR = "";
var $EXISTS = false;
var $STATIC = false;
var $EXACT = false;
var $DBM;

//    Older version of PHP can't do the 'new ClassName(args)'
//    Use initilize() if this is the case.

//    *******************************************************

function AccessDBM ($dbmFile, $static = 0)
{
global $php_errormsg;

if(!empty($dbmFile))
{
if(file_exists($dbmFile))
{
$this->EXISTS = true;
}
if($static != 0)
{
$this->STATIC = true;
}
$this->FILE = $dbmFile;
}
return;
}

//    *******************************************************

//    Identical to AccessDBM
function initialize ($dbmFile, $static = 0)
{
global $php_errormsg;

if(!empty($dbmFile))
{
if(file_exists($dbmFile))
{
$this->EXISTS = true;
}
if($static != 0)
{
$this->STATIC = true;
}
$this->FILE = $dbmFile;
}
return;
}

//    *******************************************************

function add_entry ($key, $val)
{
$results = 0;
$dbm = $this->open_dbm();
if(!$dbm) { return false; }

if(!(dbmreplace($dbm,$key,$val)))
{
if(!(dbmexists($dbm,$key)))
{
$this->ERROR = "Fatal error : could not replace $key with $val";
$this->close_dbm($dbm);
return false;
}
}
$this->close_dbm($dbm);
return true;        
}

//    *******************************************************

function remove_entry ($Key)
{
global $php_errormsg;
$removed = false;

$dbm = $this->open_dbm();
if(!$dbm) { return false; }

if(dbmexists($dbm,$Key))
{
if(!dbmdelete($dbm,$Key))
{
if(dbmexists($dbm,$Key))
{
$this->ERROR = "Unable to remove [$Key] : [$php_errormsg]";
$this->close_dbm($dbm);
return false;
}
}
else
{
$this->close_dbm($dbm);
$removed = true;
}
}
else
{
$this->ERROR = "Key [$Key] does not exist";
$this->close_dbm($dbm);
return false;
}
return true;
}

//    *******************************************************

function get_value ($Key)
{
$val = "";
$readOnly = true;

$dbm = $this->open_dbm($readOnly);

if(!$dbm) { return false; }

if(dbmexists($dbm,$Key))
{
$val = dbmfetch($dbm,$Key);
}
$this->close_dbm($dbm);
return $val;
}

//    *******************************************************

function open_dbm ($readOnly = false)
{
global $php_errormsg;

if($this->STATIC)
{
if(!(empty($this->DBM)))
{
$dbm = $this->DBM;
return ($dbm);
}
}

$fileName = $this->FILE;

if(!$this->EXISTS)
{
$dbm = @dbmopen($fileName,"n");
}
else
{
if(!$readOnly)
{
// We want the warning here if we can't be
// a writer
$dbm = dbmopen($fileName,"w");
}
else
{
$dbm = @dbmopen($fileName,"r");
}
}
if( (!$dbm) or (empty($dbm)) )
{
$this->EXISTS = false;
$this->STATIC = false;
$this->ERROR = "Unable to open [$fileName] [$php_errormsg]";
return false;
}
$this->EXISTS = true;
if($this->STATIC)
{
$this->DBM = $dbm;
}

return ($dbm);

}

//    *******************************************************

function find_key ($search)
{
$val = "";

$dbm = $this->open_dbm(1);
if(!$dbm) { return false; }
if(dbmexists($dbm,$search))
{
// Wow an exact match
$val = dbmfetch($dbm,$search);
$this->close_dbm($dbm);
$this->EXACT = true;
return $val;
}
else
{
$this->EXACT = false;
$key = dbmfirstkey($dbm);
while ($key)
{
// Strip the first whitespace char and
// everything after it.
$test = ereg_replace(" .*","",$key);
if(eregi("^$test",$search))
{
$val = dbmfetch($dbm,$key);
$this->close_dbm($dbm);
error_log("Test [$test] matched [$search]",0);
return $val;
}
$key = dbmnextkey($dbm,$key);
}
}
// Didn't find it
$this->close_dbm($dbm);
return false;
}

//    *******************************************************

// Returns the KEY
function find_val ($search)
{
$this->EXACT = false;

$Dbase = $this->get_all();
if(empty($Dbase))
{
error_log("ERROR Dbase is empty $DB->ERROR",0);
return false;
}
while ( list ( $key, $val ) = each ($Dbase) )
{
if($search == $val)
{
$this->EXACT=true;
return $key;
}
else
{
// Strip the first whitespace char and
// everything after it.

$test = ereg_replace(" .*","",$val);

if(eregi("^$test",$search))
{
$this->EXACT = false;
return $key;
}
}
}
// Didn't find it
return false;
}

//    *******************************************************

function get_all ()
{
$values = array();
$count = 0;
$readOnly = true;
$dbm = $this->open_dbm($readOnly);
if(!$dbm) { return false; }

$key = dbmfirstkey($dbm);

while ($key)
{
$val = dbmfetch($dbm,$key);
$values[$key] = $val;
$count++;
$key = dbmnextkey($dbm, $key);
}
$this->COUNT = $count;
$this->VALUES = $values;
$this->close_dbm($dbm);
return $values;
}

//    *******************************************************

function close_dbm ($dbm)
{
$results = false;

if(!$this->STATIC)
{
$results = dbmclose($dbm);
}
return $results;
}

//    *******************************************************

function static_close()
{
$results = false;

if(!$this->DBM)
{
$this->ERROR = "No static DBM to close";
return false;
}
$dbm = $this->DBM;
$results = dbmclose($dbm);
unset($this->DBM);
return $results;
}

//    *******************************************************

}
?>

这个连接上!
include("class.AccessDBM.php3");
$static = true;
$dbase = new AccessDBM("/path/to/file.dbm",$static);

register_shutdown_function($dbase->static_close());

if(!$dbase->add_entry("cdi","cdi@thewebmasters.net))
{
echo "Error adding entry: $dbase->ERRORn";
}
$Values = $dbase->get_all()
while ( list ($key,$val) = each ($Values) )
{
echo "Key: $key  Val: $val n";
}
exit;欢迎进入PHP开发资源论坛讨论。
收藏此文】【 】【打印】【关闭
相关文章
图文推荐
论 坛 资 源
PHP开发资源网奋斗目标
阅读排行:
热门技术文档
最新图文档
本站编辑推荐:(本站开通Delphi4PHP专区,欢迎进入论坛交流!)
编缉最近更新文章
网站赞助商
搜索您感兴趣的内容
 
   网站首页 -  网站地图 -  网站合作 -  手册中心 -  通用网址 -  网站论坛 -  网站投稿 -  友情链接 -  帮助中心
版权所有:PHP开发资源网 © 2003-2008 通用网址:PHP资源网 合作媒体: 赛迪网IT技术
互联网违法和不良信息举报中心 | 不良信息举报信箱