redor 2006-4-26 17:17
PHP访问数据库的一个class
[code]
<?php
/********************************************************************************************
*
* SounOS WebSite Content Management
* This Project Supported By SounOS Development Group <devel@list.sounos.org>
*
*
* This Class is Used for management of database access
* License GNU General Public License (GPL)
* Author redor <redor@126.com>
* Copyright By SounOS <http://cms.sounos.org>
* Last Modified Thu Mar 23 2006
*
*********************************************************************************************/
class cDatabase{
var $db_host = '';
var $db_name = '';
var $db_username = '';
var $db_password = '';
var $db_type = '';
var $pconnect = '';
var $error = '';
var $debug = '';
var $link_id = '';
/**
*
* Class Construct
* INIT some member viarable of class
*
* @param string , $db_host database hostname OR hostip OR sock
* @param string , $db_username username for accessing database
* @param string , $db_password password for accessing database
* @param string , $db_type database type ,mysql pgsql msql etc
* @param string , $db_name default database name for connection
* @param string , $pconnect boolen for mysql_pconnect
* @param string , $debug boolen for show debug msg
*
**/
function cDatabase($db_host,$db_username,$db_password,$db_type,
$db_name='',$pconnect='',$debug=''){
$this->db_host = $db_host;
$this->db_name = $db_name;
$this->db_username = $db_username;
$this->db_password = $db_password;
$this->db_type = $db_type;
$this->pconnect = $pconnect;
$this->debug = $debug;
return $this->connect();
}
/**
*
* db connecting
*
*
**/
function connect(){
switch($this->db_type){
case 'mysql' :
if($this->pconnect){
$this->link_id=@mysql_pconnect($this->db_host,
$this->db_username,$this->db_password);
}else{
$this->link_id=@mysql_connect($this->db_host,
$this->db_username,$this->db_password);
}
if(!is_resource($this->link_id)){
$this->error();
return '';
}
return ($this->db_name)?@mysql_select_db($this->db_name,$this->link_id):'';
break;
}
}
/**
*
* get db connection error
*
*
**/
function error(){
switch($this->db_type){
case 'mysql' :
if(is_resource($this->link_id)){
$errno = mysql_errno($this->link_id);
$error = mysql_error($this->link_id);
}else{
$errno = mysql_errno();
$errno = mysql_error();
}
if($this->debug){
echo "<pre>$errno::$error</pre><br>\n";
return 0;
}
$this->error .= "<pre>$errno::$error</pre><br>\n";
return 0;
break;
}
return 0;
}
/**
*
* Excute SQL Query on default db connection
* @param string , $SQL SQL for querying
*
**/
function query($SQL){
switch($this->db_type){
case 'mysql' :
$result = @mysql_query($SQL,$this->link_id);
if(!$result){
return $this->error();
}
return $result;
break;
}
}
/**
*
* get ALL data as Array
* @param resource , $result result of SQL query
* @param INSTANT , $type data fetch type , MYSQL_ASSOC default
*
**/
function fetch_all_array(&$result,$type=MYSQL_ASSOC){
switch($this->db_type){
case 'mysql' :
$data = Array();
if(!$result || !@mysql_num_rows($result)){
return $this->error();
}
while($row = mysql_fetch_array($result,$type)){
$data[] = $row;
}
return $data;
break;
}
}
/**
*
* get rows number of result
* @param resource , $result result of SQL query
*
**/
function num_rows(&$result){
switch($this->db_type){
case 'mysql' :
return @mysql_num_rows($result);
break;
}
}
/**
*
* //fetch data as Array constant : MYSQL_ASSOC,MYSQL_NUM , MYSQL_BOTH
* @param resource , $result result of SQL query
* @param INSTANT , $type data fetch type , MYSQL_ASSOC default
*
**/
function fetch_array(&$result,$type=MYSQL_ASSOC){
switch($this->db_type){
case 'mysql' :
return @mysql_fetch_array($result,$type);
break;
}
}
/**
*
* fetch data Array as ASSOC
* @param resource , $result result of SQL query
*
**/
function fetch_assoc(&$result){
switch($this->db_type){
case 'mysql' :
return @mysql_fetch_assoc($result);
break;
}
}
/**
*
* fetch data Array as NUM
* @param resource , $result result of SQL query
*
**/
function fetch_row(&$result){
switch($this->db_type){
case 'mysql' :
return @mysql_fetch_row($result);
break;
}
}
/**
*
* create new database
* @param string , $db_name database name
*
**/
function create_db($db_name){
switch($this->db_type){
case 'mysql' :
$SQL = " CREATE DATABASE $db_name ;";
return $this->query($SQL);
break;
}
}
/**
*
* drop database
* @param string , $db_name database name
*
**/
function drop_db($db_name){
switch($this->db_type){
case 'mysql' :
$SQL = "DROP DATABASE $db_name ;";
return $this->query($SQL);
break;
}
}
/**
*
* list all db
*
**/
function list_dbs(){
switch($this->db_type){
case 'mysql' :
$SQL = "SHOW DATABASES;";
$result = $this->query($SQL);
return $this->fetch_all_array($result);
break;
}
}
/**
*
* list tables of $db_name
* @param string , $db_name database name ,if null use default database name
*
**/
function list_tables($db_name=''){
switch($this->db_type){
case 'mysql' :
$db_name = ($db_name)?$db_name:$this->db_name;
$SQL = " SHOW TABLES FROM $db_name;";
$result = $this->query($SQL);
$lists = Array();
while($row = mysql_fetch_row($result)){
$lists[] = $row[0];
}
return $lists;
break;
}
}
/**
*
* data seek
* @param resource , $result result of SQL Query
* @param int , $offset point of data
*
**/
function data_seek(&$result,$offset){
switch($this->db_type){
case 'mysql' :
return @mysql_data_seek($result,$offset);
break;
}
}
/**
*
* fetch length
* @param resource , $result result of SQL Query
*
**/
function fetch_object(&$result){
switch($this->db_type){
case 'mysql' :
return @mysql_fetch_object($result);
break;
}
}
/**
*
* get autoincrement id
* @param resource , $link_id DB connection ID , if null used default connection ID
*
**/
function insert_id(&$link_id=''){
switch($this->db_type){
case 'mysql' :
if(@mysql_insert_id($link_id)){
return mysql_insert_id($link_id);
}else{
return mysql_insert_id($this->link_id);
}
break;
}
}
/**
*
*
*
**/
function affected_rows(&$result){
switch($this->db_type){
case 'mysql' :
break;
}
}
/**
*
* get server system stat
* @param resource , $link_id DB connection ID , if null used default connection ID
*
**/
function status(&$link_id=''){
switch($this->db_type){
case 'mysql' :
$link_id = ($link_id)?$link_id:$this->link_id;
$SQL = "SHOW STATUS;";
$result = @mysql_query($SQL,$link_id);
$stat = Array();
while (mysql_num_rows($result)
&& list($key,$val)=mysql_fetch_array($result) ){
$stat[$key] = $val;
}
return $stat;
break;
}
}
/**
*
* get server info
* @param resource , $link_id DB connection ID , if null used default connection ID
*
**/
function server_info(&$link_id=''){
switch($this->db_type){
case 'mysql' :
$link_id = ($link_id)?$link_id:$this->link_id;
$server_info = @mysql_get_server_info($link_id);
return ($server_info)?$server_info:$this->error($link_id);
break;
}
}
/**
*
* get server info
* @param resource , $link_id DB connection ID , if null used default connection ID
*
**/
function processlist(&$link_id=''){
switch($this->db_type){
case 'mysql' :
$link_id = ($link_id)?$link_id:$this->link_id;
$SQL = "SHOW PROCESSLIST;";
$result = @mysql_query($SQL,$link_id);
$processlit = Array();
while(@mysql_num_rows($result)
&& $row = mysql_fetch_array($result,MYSQL_ASSOC)){
$processlist[] = $row;
}
return $processlist;
break;
}
}
}
?>
[/code]
可以直接下载附件
OnlyOne 2006-4-26 19:39
支持原创!
希望能在CHINACODE看到更多的原创文章!