php Mysql 和Mysqli數據庫函數整合

PHP Mysql和Mysqli數據庫函數整合php

服務器若是支持mysqli函數將優先mysqli函數進行數據庫操做 不然將調用mysql函數進行數據庫操做mysql

用法SQL::connect(host,user,pass).....sql

本類所實現的方法不可傳遞數據庫鏈接對象。程序已自動傳遞數據庫

 

 

<?php
/**
 * User: iyoule
 * Date: 13-9-11
 * Time: 下午11:48
 * 用法:SQL::connect(host,user,pass).....
 * To change this template use File | Settings | File Templates.
 */

class SQL {
    private static  $sqlArr = array(
        'fetch_array'=> array('mysql_fetch_array','mysqli_fetch_array'),
        'fetch_assoc'=> array('mysql_fetch_assoc','mysqli_fetch_assoc'),
        'fetch_field'=> array('mysql_fetch_field','mysqli_fetch_field'),
        'fetch_lengths'=> array('mysql_fetch_lengths','mysqli_fetch_lengths'),
        'fetch_object'=> array('mysql_fetch_object','mysqli_fetch_object'),
        'fetch_row'=> array('mysql_fetch_row','mysqli_fetch_row'),
        'field_seek'=> array('mysql_field_seek','mysqli_field_seek'),
        'free_result'=> array('mysql_free_result','mysqli_free_result'),
		'connect'=> array('mysql_connect','mysqli_connect'),
        'data_seek'=> array('mysql_data_seek','mysqli_data_seek'),
		'affected_rows' => array('mysql_affected_rows','mysqli_affected_rows'),
        'client_encoding'=> array('mysql_client_encoding','mysqli_client_encoding'),
        'close'=> array('mysql_close','mysqli_close'),
        'errno'=> array('mysql_errno','mysqli_errno'),
        'error'=> array('mysql_error','mysqli_error'),
        'escape_string'=> array('mysql_escape_string','mysqli_escape_string'),
        'get_client_info'=> array('mysql_get_client_info','mysqli_get_client_info'),
        'get_host_info'=> array('mysql_get_host_info','mysqli_get_host_info'),
        'get_proto_info'=> array('mysql_get_proto_info','mysqli_get_proto_info'),
        'get_server_info'=> array('mysql_get_server_info','mysqli_get_server_info'),
        'info'=> array('mysql_info','mysqli_info'),
        'insert_id'=> array('mysql_insert_id','mysqli_insert_id'),
		'ping'=> array('mysql_ping','mysqli_ping'),
        'query'=> array('mysql_query','mysqli_query'),
        'real_escape_string'=> array('mysql_real_escape_string','mysqli_real_escape_string'),
        'select_db'=> array('mysql_select_db','mysqli_select_db'),
        'set_charset'=> array('mysql_set_charset','mysqli_set_charset'),
        'stat'=> array('mysql_stat','mysqli_stat'),
        'thread_id'=>  array('mysql_thread_id','mysqli_thread_id'),
        'num_fields'=> array('mysql_num_fields','mysqli_num_fields'),
        'num_rows'=> array('mysql_num_rows','mysqli_num_rows')

    );
    private static $resource = null;
    private static $funcs = array(
        'affected_rows','client_encoding','close','errno','error','escape_string','get_client_info','get_host_info','get_proto_info',
        'get_proto_info','get_server_info','info','insert_id','ping','query','real_escape_string','select_db','set_charset','stat',
        'thread_id'
    );
    private static function _globalFunc_($func=__function__,$args){
        if($func==='_globalFunc_') return false;
        $_Mysqli = extension_loaded('mysqli');
        $sqlArr = self::$sqlArr;
        $_func = $func;
        $func = $_Mysqli?$sqlArr[$func][1]:$sqlArr[$func][0];
        if($_func=='connect'){
            return self::$resource = self::$resource===null?call_user_func_array($func,$args):self::$resource;
        }
        if(in_array($_func,self::$funcs)){
            $_Mysqli?array_unshift($args,self::$resource):array_push($args,self::$resource);
        }
        unset($sqlArr,$_Mysqli);
        return call_user_func_array($func,$args);
    }
    public static function affected_rows(){
        return self::_globalFunc_(__function__,func_get_args());
    }
    public static function client_encoding(){
        return self::_globalFunc_(__function__,func_get_args());
    }
    public static function close(){
        return self::_globalFunc_(__function__,func_get_args());
    }
    public static function connect(){
        return self::_globalFunc_(__function__,func_get_args());
    }
    public static function data_seek(){
        return self::_globalFunc_(__function__,func_get_args());
    }
    public static function errno(){
        return self::_globalFunc_(__function__,func_get_args());
    }
    public static function error(){
        return self::_globalFunc_(__function__,func_get_args());
    }
    public static function escape_string(){
        return self::_globalFunc_(__function__,func_get_args());
    }
    public static function fetch_array(){
        return self::_globalFunc_(__function__,func_get_args());
    }
    public static function fetch_assoc(){
        return self::_globalFunc_(__function__,func_get_args());
    }
    public static function fetch_field(){
        return self::_globalFunc_(__function__,func_get_args());
    }
    public static function fetch_lengths(){
        return self::_globalFunc_(__function__,func_get_args());
    }
    public static function fetch_object(){
        return self::_globalFunc_(__function__,func_get_args());
    }
    public static function fetch_row(){
        return self::_globalFunc_(__function__,func_get_args());
    }
    public static function field_seek(){
        return self::_globalFunc_(__function__,func_get_args());
    }
    public static function free_result(){
        return self::_globalFunc_(__function__,func_get_args());
    }
    public static function get_client_info(){
        return self::_globalFunc_(__function__,func_get_args());
    }
    public static function get_host_info(){
        return self::_globalFunc_(__function__,func_get_args());
    }
    public static function get_proto_info(){
        return self::_globalFunc_(__function__,func_get_args());
    }
    public static function get_server_info(){
        return self::_globalFunc_(__function__,func_get_args());
    }
    public static function info(){
        return self::_globalFunc_(__function__,func_get_args());
    }
    public static function insert_id(){
        return self::_globalFunc_(__function__,func_get_args());
    }
    public static function num_fields(){
        return self::_globalFunc_(__function__,func_get_args());
    }
    public static function num_rows(){
        return self::_globalFunc_(__function__,func_get_args());
    }
    public static function ping(){
        return self::_globalFunc_(__function__,func_get_args());
    }
    public static function query(){
        return self::_globalFunc_(__function__,func_get_args());
    }
    public static function real_escape_string(){
        return self::_globalFunc_(__function__,func_get_args());
    }
    public static function select_db(){
        return self::_globalFunc_(__function__,func_get_args());
    }
    public static function set_charset(){
        return self::_globalFunc_(__function__,func_get_args());
    }
    public static function stat(){
        return self::_globalFunc_(__function__,func_get_args());
    }
    public static function thread_id(){
        return self::_globalFunc_(__function__,func_get_args());
    }
    private function __destruct(){
        self::close();
        self::$resource=null;
    }
}
相關文章
相關標籤/搜索