首页 > 代码库 > mysqli 对象风格封装

mysqli 对象风格封装

<?php
/* $obj=new obj(param...)
$obj->set_charset()
$obj->connect_errno
$obj->connect_error

$obj->query()
$obj->errno
$obj->error

$result=$obj->query(); //mysqli_result对象
$result->fetch_all()
$result->fetch_array()

$obj->close() */
class DbMysqliManage extends mysqli{
    public $link=null;
    public $message;
    /**
     * 操作提示信息
     * @param unknown $mes   信息
     * @param string $flag   成功与失败标志
     * @return boolean
     */
    public function getMessage($mes,$flag=false){
        if($flag){
            $this->message.=‘<div style="color:green;font-size:14px">‘.$mes.‘</div>‘;
            return true;
        }else{
            $this->message.=‘<div style="color:red;font-size:14px">‘.$mes.‘</div>‘;
            return false;
        }
    }  
    /**
     * 初始化link
     * @param unknown $host 主机地址
     * @param unknown $username 用户
     * @param unknown $password 密码
     * @param unknown $dbName 数据库名
     * @param string $charset 字符集
     */
    public function __construct($host,$username,$password,$dbName,$charset=‘utf8‘){
        $this->link=new mysqli($host,$username,$password,$dbName);
        if($this->link->connect_error){
            return  $this->getMessage(‘数据库连接失败 错误编号‘.$this->link->connect_errno.
                ‘ 错误信息:‘.iconv(‘gbk‘,‘utf-8‘,$this->link->connect_error));            
        }else{
            $this->getMessage(‘数据库连接成功‘,true);
        }
        $char=$this->link->set_charset($charset);
        if($char===false) return $this->getMessage(‘错误的编码设置 错误编号:‘.
            $this->link->mysqli_errno.‘ 错误信息: ‘.$this->link->mysqli_error);
        $this->getMessage(‘编码设置成功‘,true);       
    }
    /**
     * 执行增删改语句
     * @param unknown $sql sql语句
     * @return boolean
     */
    public function execSql($sql){
        $sql=trim($sql);
        $match=preg_match(‘/^(insert|update|delete)/‘, $sql);
        if($match===0){
            return $this->getMessage(__FUNCTION__.‘()方法只支持增删改操作‘);
        }else{
            $result=$this->link->query($sql);
            if($result===false){
                return $this->getMessage($sql.‘语句错误  错误编号:‘.
            $this->link->errno.‘ 错误信息: ‘.$this->link->error);
            }else{
                return $this->getMessage(‘增删改操作成功‘,true);
            }
        }
    }
    /**
     * 查询一条记录
     * @param unknown $sql  sql语句
     * @return 失败:boolean|成功:一维数组
     */
     public function getOneData($sql){
      $sql=trim($sql);
        $match=preg_match(‘/^select/‘, $sql);
        if($match===0){
            return $this->getMessage(__FUNCTION__.‘()方法只支持查询操作‘);
        }else{
            $result=$this->link->query($sql); //mysqli_result对象
            if(!is_object($result)){                
                return $this->getMessage($sql.‘语句错误  错误编号:‘.
            $this->link->errno.‘ 错误信息: ‘.$this->link->error);
            }else{
                $row=$result->fetch_array(MYSQLI_ASSOC);
                 if($result->fetch_array(MYSQLI_ASSOC)) return $this->getMessage(__FUNCTION__.‘()只能查询一条数据  错误编号:‘.
            $this->link->errno.‘ 错误信息: ‘.$this->link->error);
                $this->getMessage(‘查询一条记录成功‘,true);
                unset($result);
                return $row;            
            }
        }
    }
    /**
     * 查询多条记录
     * @param unknown $sql sql语句
     * @return 失败:boolean|成功:二位数组
     */
    public function getMoreData($sql){
        $sql=trim($sql);
        $match=preg_match(‘/^select/‘, $sql);
        if($match===0){
            return $this->getMessage(__FUNCTION__.‘()方法只支持查询操作‘);
        }else{
            $result=$this->link->query( $sql); //mysqli_result对象
            if(!is_object($result)){
                return $this->getMessage($sql.‘语句错误  错误编号:‘.
                    mysqli_errno($this->link).‘ 错误信息: ‘.mysqli_error($this->link));
            }else{
                $moreRow=$result->fetch_all(MYSQLI_ASSOC);
                $this->getMessage(‘获取多条记录成功‘,true);
                unset($result);
                return $moreRow;
            }
        }
    }
    /**
     * 关闭连接资源
     * @return boolean
     */
    public function closeDb(){
        $close=$this->link->close();
        if($close===false) return $this->getMessage(‘数据库连接关闭失败‘);
        return $this->getMessage(‘数据库连接关闭成功‘,true);
    }
    /**
     * 析构函数
     *
     */
    public function __destruct(){
        unset($this->message);
    }
}

mysqli 对象风格封装