这是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","[email protected])) { echo "Error adding entry: $dbase->ERRORn"; } $Values = $dbase->get_all() while ( list ($key,$val) = each ($Values) ) { echo "Key: $key Val: $val n"; } exit; phpfans.net收集整理 |