另一个mysql操作的类
<?php  
/* 
##    Simple Database Abstraction Layer 1.2 [lib.sdba.php]  
##    by Gabe Bauman <[email protected]
##    Wednesday, April 05, 2000 
##    extended by Michael Howitz <[email protected]
##    Thuesday, Jun 15, 2000 
##  
##    Easy way to read and write to any (!)  database.  
##    Only one subclass (CDBMySQL) has been written.  
##  
##    Changes in 1.1 from 1.0:  
##      - added the optional $dbname parameter to the constructor  
##         of the base class. If specified, it calls SelectDB for you.  
##      - function results now use 1 and 0 rather than true or false.  
##      - minor efficiency fixes  
##      
##    Changes in 1.2 from 1.1: 
##      - added support for: Commit, Rollback, SetAutoCommit 
##      - added subclass for oracle (OCI8) support 
## 
##    Usage:  
##  
##    $sql = new CDB_OCI8 ($DB_HOST, $DB_USER, $DB_PASS); 
##    $sql -> Query("SELECT Lastname, Firstname FROM people");  
##    while ($sql -> ReadRow()) {  
##      print $sql -> RowData["Lastname"] . "," . $sql -> RowData["Firstname"] ."<br>n";  
##    }  
##    $sql -> Close();  
##  
##    If you use this software, please leave this header intact.  
##    Please send any modifications/additions to the author for  
##    merging into the distribution (like other DB subclasses!)  
*/ 

class CDBAbstract {  
  var 
$_db_linkid 0;  
  var 
$_db_qresult 0
  var 
$_auto_commit false
  var 
$RowData = array();  
  var 
$NextRowNumber 0;  
  var 
$RowCount 0
  function 
CDBAbstract () {  
    die (
"CDBAbstract: Do not create instances of CDBAbstract! Use a subclass.");  
  } 
  function 
Open ($host$user$pass$db ""$autocommit true) {  
  } 
  function 
Close () { 
  } 
  function 
SelectDB ($dbname) { 
  } 
  function 
Query ($querystr) { 
  } 
  function 
SeekRow ($row 0) { 
  } 
  function 
ReadRow () { 
  } 
  function 
Commit () { 
  } 
  function 
Rollback () { 
  } 
  function 
SetAutoCommit ($autocommit) { 
    
$this->_auto_commit $autocommit
  } 
  function 
_ident () {  
    return 
"CDBAbstract/1.2";  
  } 


class 
CDBMySQL extends CDBAbstract {  
  function 
CDBMySQL ($host$user$pass$db "") {  
    
$this->Open ($host$user$pass);  
    if (
$db != "")   
      
$this->SelectDB($db);  
  }    
  function 
Open ($host$user$pass$autocommit true) {  
    
$this->_db_linkid mysql_connect ($host$user$pass);  
  }    
  function 
Close () {  
    @
mysql_free_result($this->_db_qresult);  
    return 
mysql_close ($this->_db_linkid);  
  }    
  function 
SelectDB ($dbname) {  
    if (@
mysql_select_db ($dbname$this->_db_linkid) == true) {  
      return 
1;      
    }   
    else {  
      return 
0;  
    }     
  }     
  function  
Query ($querystr) {  
    
$result mysql_query ($querystr$this->_db_linkid);  
    if (
$result == 0) {  
      return 
0;  
    }   
    else {  
      if (
$this->_db_qresult
    @
mysql_free_result($this->_db_qresult);  
      
$this->RowData = array();        
      
$this->_db_qresult $result;  
      
$this->RowCount = @mysql_num_rows ($this->_db_qresult);  
      if (!
$this->RowCount) {  
    
// The query was probably an INSERT/REPLACE etc.  
    
$this->RowCount 0;  
      }   
      return 
1;  
    }  
  }    
  function 
SeekRow ($row 0) {  
    if ((!
mysql_data_seek ($this->_db_qresult$row)) or ($row $this->RowCount-1)) {  
      
printf ("SeekRow: Cannot seek to row %dn"$row);  
      return 
0;  
    }  
    else {  
      return 
1;  
    }  
  }      
  function 
ReadRow () {  
    if(
$this->RowData mysql_fetch_array ($this->_db_qresult)) {  
      
$this->NextRowNumber++;  
      return 
1;  
    }  
    else {  
      return 
0;  
    }  
  }    
  function 
Commit () { 
    return 
1
  } 
  function 
Rollback () { 
    echo 
"WARNING: Rollback is not supported by MySQL"
  } 
  function 
_ident () {  
    return 
"CDBMySQL/1.2";  
  }    
}  


class 
CDB_OCI8 extends CDBAbstract {  
  function 
CDB_OCI8($host$user$pass$autocommit true) { 
    
$this->Open ($host$user$pass""$autocommit);  
  } 

  function 
Open($host$user$pass$db ""$autocommit true) {  
    (
$this->_db_linkid OCILogon($user$pass$host)) or die("Error on logon: "OCIError()); 
    
$this->_auto_commit $autocommit
  } 

  function 
Close() {  
    
OCIFreeStatement($this->_db_qresult); 
    
OCILogOff($this->_db_linkid) or die ("Error on logoff: "OCIError()); 
  } 

  function 
SelectDB($dbname) { 
    echo 
"CDB_OCI8 does not support SelectDB"
    return 
0
  } 

  function 
Query($querystr) { 
    (
$result ociparse($this->_db_linkid$querystr))  
      or die(
"Error in query: "OCIError()); 
    if (
$this->_auto_commit) { 
      
OCIExecute($resultOCI_COMMIT_ON_SUCCESS); 
    } 
    else { 
      
OCIExecute($resultOCI_DEFAULT); 
    } 
     
    if (
$result == 0) {  
      return 
0;  
    }   
    else { 
      if (
$this->_db_qresult
    
OCIFreeStatement($this->_db_qresult); 
      
$this->RowData = array();    
      
$this->_db_qresult $result
      
$this->RowCount OCIRowCount($this->_db_qresult); 
      if (!
$this->RowCount) { 
    
// The query was probably an INSERT/REPLACE etc.  
    
$this->RowCount 0;  
      } 
      return 
1;  
    } 
  } 

  function 
SeekRow ($row 0) { 
    die (
"CDB_OCI8 does not support SelectDB"); 
  } 
      
  function 
ReadRow() {  
    if(
OCIFetchInto($this->_db_qresult$this->RowDataOCI_ASSOC)) {  
      
$this->NextRowNumber++;  
      return 
1;  
    } 
    else { 
      return 
0;  
    } 
  }  

  function 
Commit() { 
    
OCICommit($this->_db_linkid); 
  } 
  function 
Rollback() { 
    
OCIRollback($this->_db_linkid); 
  } 

  function 
_ident () {  
    return 
"CDB_OCI8/1.0";  
  } 


?>