首页 >后端开发 >php教程 >国外好东西真的多,现在贴上一个访问ACCESS的类!_PHP

国外好东西真的多,现在贴上一个访问ACCESS的类!_PHP

WBOY
WBOY原创
2016-06-01 12:35:48907浏览

Access

这是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->ERROR\n";
    }
    $Values = $dbase->get_all()
    while ( list ($key,$val) = each ($Values) )
    {
        echo "Key: $key  Val: $val \n";
    }
    exit;

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn