Home > Backend Development > PHP Tutorial > 国外好东西真的多,现在贴上一个访问ACCESS的类!_PHP

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

WBOY
Release: 2016-06-01 12:35:48
Original
895 people have browsed it

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;

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template