mysqli 过程化风格

Posted 皇家玄学团

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysqli 过程化风格相关的知识,希望对你有一定的参考价值。

<?php
/**
 *
 * @author Administrator
 *  mysqli_conncet() obj
 *  mysqli_set_charset() bool
 *  mysqli_query()  mixed  输入bool  输出result_obj
 *  mysqli_fetch_array()  row
 *  mysqli_fetch_all() all
 */
class DbMysqliManage{
    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=mysqli_connect($host,$username,$password,$dbName);
        if($this->link===false){
            return  $this->getMessage(‘数据库连接失败 错误编号‘.mysqli_connect_errno().
                ‘ 错误信息:‘.iconv(‘gbk‘,‘utf-8‘,mysqli_connect_error()));            
        }else{
            $this->getMessage(‘数据库连接成功‘,true);
        }
        $char=mysqli_set_charset($this->link, $charset);
        if($char===false) return $this->getMessage(‘错误的编码设置 错误编号:‘.
            mysqli_errno($this->link).‘ 错误信息: ‘.mysqli_error($this->link));
        $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=mysqli_query($this->link, $sql);
            if($result===false){
                return $this->getMessage($sql.‘语句错误  错误编号:‘.
            mysqli_errno($this->link).‘ 错误信息: ‘.mysqli_error($this->link));
            }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=mysqli_query($this->link, $sql); //mysqli_result对象
            if(!is_object($result)){                
                return $this->getMessage($sql.‘语句错误  错误编号:‘.
            mysqli_errno($this->link).‘ 错误信息: ‘.mysqli_error($this->link));
            }else{
                $row=mysqli_fetch_array($result,MYSQLI_ASSOC);
                 if(mysqli_fetch_array($result,MYSQLI_ASSOC)) return $this->getMessage(__FUNCTION__.‘()只能查询一条数据  错误编号:‘.
            mysqli_errno($this->link).‘ 错误信息: ‘.mysqli_error($this->link));
                 $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=mysqli_query($this->link, $sql); //mysqli_result对象
            if(!is_object($result)){
                return $this->getMessage($sql.‘语句错误  错误编号:‘.
                    mysqli_errno($this->link).‘ 错误信息: ‘.mysqli_error($this->link));
            }else{
                $moreRow=mysqli_fetch_all($result,MYSQLI_ASSOC);  
                unset($result);
                return $moreRow;
            }
        }
    }
    /**
     * 关闭连接资源
     * @return boolean
     */
    public function closeDb(){
        $close=mysqli_close($this->link);
        if($close===false) return $this->getMessage(‘数据库连接关闭失败‘);
        return $this->getMessage(‘数据库连接关闭成功‘,true);
    }
    /**
     * 析构函数
     *
     */
    public function __destruct(){
        unset($this->message);
    }
}













































































































































以上是关于mysqli 过程化风格的主要内容,如果未能解决你的问题,请参考以下文章

mysqli数据库连接

php的mysqlmysqliPDOmysqli

PDO

mysqli操作mysql数据库(面向对象风格)

mysqli 对象风格封装

PHP mysql 到 mysqli 迁移问题(自定义函数,程序风格)