<?php
 
/******************************************************************************
 
MySQL
 
/******************************************************************************/
 
final class db_mysql extends db{
 
/******************************************************************************/
 
    public function __construct($config){
 
        $this->link = @mysqli_connect(
 
            $config['host'],
 
            $config['user'],
 
            $config['pass'],
 
            $config['base'],
 
            $config['port'],
 
            $config['sock']
 
        );
 
        if(!$this->link){
 
            throw new db_Exeption('MySQL #'.@mysqli_connect_errno($this->link).': '.@mysqli_connect_error($this->link).'!', 1);
 
        }
 
        if($config['coll'] !== false){
 
            self::c($config['coll']);
 
        }
 
    }
 
/******************************************************************************/
 
    public function __destruct(){
 
        if(!!$this->link){
 
            @mysqli_close($this->link);
 
        }
 
    }
 
/******************************************************************************/
 
    public function q($query){
 
        $timer = microtime(true);
 
        $this->rows = 0;
 
        $this->fields = 0;
 
        $return = null;
 
        if(!is_string($query) or empty($query)){
 
            throw new db_Exeption('MySQL #2: Invalid query!', 2);
 
        }
 
        $result = mysqli_query($this->link, $query);
 
        $this->counter += 1;
 
        if($result === false){
 
            $this->timer += (microtime(true) - $timer);
 
            throw new db_Exeption('MySQL #'.mysqli_errno($this->link).': '.mysqli_error($this->link).'!', 3);
 
        }
 
        elseif($result === true){
 
            $this->rows = mysqli_affected_rows($this->link);
 
            $return = true;
 
        }
 
        else{
 
            $this->fields = mysqli_num_fields($result);
 
            $this->rows = mysqli_num_rows($result);
 
            $return = array();
 
            while(($row = mysqli_fetch_assoc($result)) !== null){
 
                $return[] = $row;
 
            }
 
            mysqli_free_result($result);
 
        }
 
        $this->timer += (microtime(true) - $timer);
 
        return($return);
 
    }
 
/******************************************************************************/
 
    public function s($data){
 
        if(is_array($data)){
 
            foreach($data as $key => $val){
 
                $data[$key] = self::s($val);
 
            }
 
            return($data);
 
        }
 
        if(function_exists('mysqli_real_escape_string')){
 
            $data = mysqli_real_escape_string($this->link, $data);
 
        }
 
        elseif(function_exists('mysqli_escape_string')){
 
            $data = mysqli_escape_string($this->link, $data);
 
        }
 
        else{
 
            $data = addslashes($data);
 
        }
 
        return($data);
 
    }
 
/******************************************************************************/
 
    public function c($collate){
 
        if(@mysqli_set_charset($this->link, $collate)){
 
            return(true);
 
        }
 
        else{
 
            throw new db_Exeption('MySQL #'.mysqli_errno($this->link).': '.mysqli_error($this->link).'!', 3);
 
        }
 
    }
 
/******************************************************************************/
 
    public function l(){
 
        return(($this->link !== false) ? @mysqli_insert_id($this->link) : false);
 
    }
 
/******************************************************************************/
 
}
 
/******************************************************************************/
 
 
 |