求一个能代替mysqli的面向对象数据库连接类

求一个能代替mysqli的面向对象数据库连接类

服务器不支持mysqli,但程序已经全部做好都是用这种方式。。空间商方面不能提供支持
所以如题。。

可否有这样的类可以只要更换数据库连接语句。。

请附下使用方法(学艺浅,学习中。。)

这是php爱好者站用的操作数据库的类,你看看咯

[复制到剪切板]
CODE:
<?php 
/**
 * mysql数据库操作类
 * 
 * @author Fisher
 */
class Mysql {
    
/**
     * 保存sql执行次数
     *
     * @var int
     */
    
protected  $query_num 0;
    
    
/**
     * mysql连接标识
     *
     * @var resource
     */
    
protected $link;
    
    
/**
     * 当前用的数据库名
     *
     * @var string
     */
    
protected $database;
    
    
/**
     * 当前用的字符集
     *
     * @var unknown_type
     */
    
protected $charset;
    
    
/**
     * 当前执行的sql语句
     *
     * @var string
     */
    
public $sql;
    
    
/**
     * mysql语句执行错误是否退出并显示错误
     *
     * @var boolean
     */
    
public $quit false;
    
    
/**
     * mysql语句执行错误是否显示错误信息
     *
     * @var boolean
     */
    
public $show_error false;
    
    
/**
     * 保存错误信息
     *
     * @var array
     */
    
public $errors = array();
    
    public 
$ping false;
    
    
/**
     * mysql配置
     *
     * @var array
     */
    
protected $config = array(
        
'dbhost'=>''
        
'dbuser'=>''
        
'dbpw'=>''
        
'dbname'=>''
        
'dbcharset'=>''
        
'pconnect'=>0
        
'newlink'=>1,
    );
    
    
/**
     * 设置mysql配置
     *
     * @param array $config
     */
    
public function set_config(array $config){
        
$keys array_keys($this->config);
        foreach (
$config as $key => $val){
            if(
in_array($key$keys)){
                
$this->config[$key] = $val;
            }
        }
    }
    
    
/**
     * 如果没有连接,连接mysql
     *
     */
    
private function mysql_connect(){
        if(!
is_resource($this->link) || get_resource_type($this->link) != 'mysql link'){
            
$this->connect($this->config['dbhost'], $this->config['dbuser'], $this->config['dbpw'], $this->config['dbname'], $this->config['dbcharset'], $this->config['pconnect'], $this->config['newlink']);
        }
    }
    
    
/**
     * 连接数据库
     *
     * @param string $dbhost MySQL服务器地址
     * @param string $dbuser 数据库用户名
     * @param string $dbpw 数据库密码
     * @param string $dbname 数据库名
     * @param string $dbcharset 数据表字符集
     * @param int $pconnect 是否为持久连接
     * @param int $newlink 是否新打开连接
     */
    
public function connect($dbhost$dbuser$dbpw$dbname=''$dbcharset=''$pconnect=0$newlink=1) {
        if(
$pconnect) {
            if(!
$this->link = @mysql_pconnect($dbhost$dbuser$dbpw)) {
                
$this->error_handle('Can not connect to MySQL server');
            }
        } 
        else {
            if(!
$this->link = @mysql_connect($dbhost$dbuser$dbpw$newlink)) {
                
$this->error_handle('Can not connect to MySQL server');
            }
        }
        if(
$this->version() > '4.1' && $dbcharset) {
            
$this->set_names($dbcharset);
        }
        if(
$this->version() > '5.0.1') {
            @
mysql_query("SET sql_mode=''"$this->link);
        }

        if(
$dbname) {
            
$this->select_db($dbname$this->link);
        }
    }

    public function 
select_db($dbname) {
        
$this->mysql_connect();
        
$this->database $dbname;
        return 
mysql_select_db($dbname$this->link);
    }
    
    public function 
set_names($charset){
        
$charset strtolower(str_replace("-"""$charset));
        
$this->charset $charset;
        return 
$this->query("SET character_set_connection=$charset, character_set_results=$charset, character_set_client=binary"$this->link);
    }

    public function 
query($sql) {//echo $sql;
        
if($this->ping && !$this->ping()){
            
$this->close();
        }
        
$this->mysql_connect();
        
$this->sql $sql;
        
$start microtime(true);
        if(!(
$query = @mysql_query($sql$this->link))) {
            
$error_str $this->error_handle('MySQL query error'$sql);
            
//记录出错的sql信息
            
@file_put_contents(WEB_ROOT.'/log/sqlerror.txt'$error_str.date("Y-m-d H:i:s")."\n\n"FILE_APPEND);
        }
        if((
$query_time=microtime(true)-$start) > 2){
            
//记录执行时间较长的sql
            
@file_put_contents(WEB_ROOT.'/log/sqllong.txt'$sql." ".$query_time." ".date("Y-m-d H:i:s")."\n"FILE_APPEND);
        }
        
$this->query_num++;
        return 
$query;
    }
    
/**
     * 返回该类的一个或全部属性
     *
     * @param string $name
     * @return mixed
     */
    
public function get_vars($name=null){
        
$vars get_class_vars($this);
        return 
$name ? (isset($vars[$name]) ? $vars[$name] : null) : $vars;
    }
    
    
/**
     * 返回mysql执行次数
     *
     * @return int
     */
    
public function query_num(){
        return 
$this->query_num;
    }
    
    
/**
     * 返回mysql连接标识
     *
     * @return resource
     */
    
public function get_link(){
        return 
$this->link;
    }
    
    function 
ping(){
        return 
mysql_ping($this->link);
    }

    public function 
affected_rows() {
        
$this->mysql_connect();
        return 
mysql_affected_rows($this->link);
    }

    public function 
result($query$row) {
        
$query = @mysql_result($query$row);
        return 
$query;
    }

    public function 
num_rows($query) {
        return 
mysql_num_rows($query);
    }

    public function 
num_fields($query) {
        return 
mysql_num_fields($query);
    }

    public function 
free_result($query) {
        return 
mysql_free_result($query);
    }

    public function 
insert_id() {
        return (
$id mysql_insert_id($this->link)) >= $id $this->result($this->query("SELECT last_insert_id()"), 0);
    }

    public function 
fetch_array($query$result_type MYSQL_BOTH) {
        return 
mysql_fetch_array($query$result_type);
    }
    
    public function 
fetch_assoc($query){
        return 
mysql_fetch_assoc($query);
    }

    public function 
fetch_row($query) {
        return 
mysql_fetch_row($query);
    }
    
    public function 
fetch_object($query){
        return 
mysql_fetch_object($query);
    }

    public function 
version() {
        
$this->mysql_connect();
        return 
mysql_get_server_info($this->link);
    }

    public function 
error() {
        return ((
$this->link) ? mysql_error($this->link) : mysql_error());
    }

    public function 
errno() {
        return 
intval(($this->link) ? mysql_errno($this->link) : mysql_errno());
    }

    public function 
close() {
        if(
is_resource($this->link)/* && get_resource_type($this->link) != 'mysql link'*/){
            return 
mysql_close($this->link);
        }
    }
    
    
/**
     * mysql错误处理
     *
     * @param string $message 提示信息
     * @param string $sql 出错sql语句
     */
    
private function error_handle($message=''$sql=''){
        
$error_str = ($message $message."\n" "").($sql $sql."\n" "").$this->errno().":".$this->error()."\n";
        
array_push($this->errors$error_str);
        if(
$this->show_error){
            echo 
$error_str;
        }
        if(
$this->quit){
            exit;
        }
        
        return 
$error_str;
    }
    
    
//expansion--------------------------------------------------------------------------------------
    /**
     * 返回sql数据集的总数
     * @param string $sql sql语句
     * @return int
     */
    
public function total_row($sql){
        
$query $this->query($sql);
        
$rows $this->num_rows($query);
        
$this->free_result($query);
        return 
$rows;
    }
    
    
/**
     * 返回数据集的第一行数据的第一列
     *
     * @param string $sql sql语句
     * @return mixed
     */
    
public function return_first($sql){
        
$row $this->return_row($sql);
        if(
count($row))
            return 
array_pop($row);
        
        return 
null;
    }
    
    
/**
     * 返回数据集的第一行数据
     *
     * @param string $sql sql语句
     * @return array
     */
    
public function return_row($sql){
        
$arr = array();
        
$query $this->query($sql);
        if(
$this->num_rows($query))
            
$arr $this->fetch_assoc($query);
        
$this->free_result($query);
        return 
$arr;
    }
    
    
/**
     * 返回包含包含所有数据行的数组
     *
     * @param string $sql sql语句
     * @return array
     */
    
public function return_array($sql) {
        
$arr = array();
        
$query $this->query($sql);
        while(
$row $this->fetch_assoc($query)){
            
$arr[] = $row;
        }
        
$this->free_result($query);
        return 
$arr;
    }
    
    
/**
     * 返回包含包含所有数据行的数组,该数组的索引是指定索引或该行第一列的值
     *
     * @param string $sql sql语句
     * @return array
     */
    
public function return_array_column_as_key($sql$column_key=null){
        
$arr = array();
        
$query $this->query($sql);
        while(
$row $this->fetch_assoc($query)){
            
$arr[isset($column_key)?$row[$column_key]:current($row)] = $row;
        }
        
$this->free_result($query);
        return 
$arr;
    }
    
    
/**
     * 返回列名的所有值的数组
     *
     * @param string $sql sql语句
     * @return array
     */
    
public function return_array_column_as_val($sql$column){
        
$arr = array();
        
$query $this->query($sql);
        while(
$row $this->fetch_assoc($query)){
            
$arr[] = $row[$column];
        }
        
$this->free_result($query);
        return 
$arr;
    }
    
    
/**
     * 返回指定列名为key,指定列名为val的数组
     *
     * @param string $sql sql语句
     * @return array
     */
    
public function return_array_key_val($sql$column_key$column_val){
        
$arr = array();
        
$query $this->query($sql);
        while(
$row $this->fetch_assoc($query)){
            
$arr[$row[$column_key]] = $row[$column_val];
        }
        
$this->free_result($query);
        return 
$arr;
    }
    
    
/**
     * 插入数据库
     *
     * @param string $tbName 数据表名
     * @param array $values 要插入的数据,其中索引必须与数据表列名一一对应。
     * @return resource|false
     */
    
public function insert($tbName$values){
        
$sql "INSERT INTO `{$tbName}` ( ";
        
$columnArr $valArr = array();
        foreach (
$values as $key => $value){
            
$columnArr[] = "`{$key}`";
            
$valArr[] = is_null($values) ? 'NULL' "'{$value}'";
        }
        
$sql .= implode(', '$columnArr);
        
$sql .= " ) VALUES ( ";
        
$sql .= implode(', '$valArr);
        
$sql .= " )";
        
//echo $sql;exit;
        
if($this->query($sql)){
            return 
$this->insert_id();
        }
        return 
false;
    }
    
    public function 
insert_data($tbName$values){
        return 
$this->insert($tbName$values);
    }
    
    
/**
     * 更新数据
     *
     * @param string $tbName 数据表名
     * @param array $values 要插入的数据,其中索引必须与数据表列名一一对应。
     * @param string $condition 条件,不带where
     * @param string|array $expansion 额外要更新的数据,如:'views = views+1'或者array('views = views+1', 'posts = post+2')
     * @return resource|false
     */
    
public function update($tbName$values$condition=''$expansion=''){
        
$sql "UPDATE `{$tbName}` SET ";
        
$sqlArr = array();
        foreach (
$values as $key => $value){
            
$sqlArr[] = "`{$key}` = '{$value}'";
        }
        
$sql_update_col implode(', ',$sqlArr);
        
$sql .= $sql_update_col;
        
        if(
$expansion){
            if(
is_array($expansion)){
                
$sql .= ($sql_update_col?', ':'').implode(', '$expansion);
            }else {
                
$sql .= ($sql_update_col?', ':'').$expansion;
            }
        }
        if(
$condition)
            
$sql .= " WHERE " $condition;
        
//echo $sql;
        
return $this->query($sql);
    }
    
    public function 
update_data($tbName$values$condition=''$expansion=''){
        return 
$this->update($tbName$values$condition$expansion);
    }
} ;


如履薄冰

   谢谢版大。。