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);
    }
}

时间: 2024-08-26 15:37:28

mysqli 对象风格封装的相关文章

php对mysqli的小封装

<?php class MysqliCommon {     private $mysqli; //内部建立mysqli对象     private $dbErrorFile = ''; //错误日志文件     /**      *       * @param array $dbConfi        * 类似于array("host"=>"127.0.0.1","dbname"=>"dilicms2"

JAVA之旅(四)——面向对象思想,成员/局部变量,匿名对象,封装 , private,构造方法,构造代码块

JAVA之旅(四)--面向对象思想,成员/局部变量,匿名对象,封装 , private,构造方法,构造代码块 加油吧,节奏得快点了 1.概述 上篇幅也是讲了这点,这篇幅就着重的讲一下思想和案例 就拿买电脑来说吧,首先,你不懂电脑,你去电脑城买电脑,和大象装冰箱里一样,是什么步骤?咨询 砍价 ,谈妥了就那电脑走人,对吧,这就是面向过程的思想,而面向对象是:你有一个哥们,他懂电脑,什么都会,你只要带他去,就行,你这个哥们就是对象,在JAVA中,我们就是操作一个对象去完成各种各样的操作的,这就是面向对

mysqli对象中的multi_query()方法

一次执行多条SQL命令使用mysqli对象中的multi_query()方法. 具体做法: 把多条SQL命令写在同一个字符串里作为参数传递给multi_query()方法,多条SQL之间使用分号(;)分隔.如果第一条命令在执行里没有出错,这个方法就会返回TRUE,否则返回FALSE . 由于multi_query()方法能够连接执行一个或多个查询,而每条SQL命令都可能返回一个结果,在必要时需要获取每一个结果集.所以对该方法返回结果的处理也有一些变化,第一条查询命令的结果要用mysqli对象中的

leveldb.net对象读写封装

leveldb是一个非常高效的可嵌入式K-V数据库,在.NET下有着基于win实现的包装leveldb.net;不过leveldb.net只提供了基于byte[]和string的处理,这显然会对使用的时候带来不方便,毕竟在编写应用的时候都是希望通过对象的方式来存储,如我们常见的redis,mongodb和memcached等等都提供对象方式的读写.以下主要讲解leveldb.net基础上封装一层序列化功能方便使用. 制定对象化的访问接口 为了不修改leveldb.net的代码,所以选择在他基础过

php示例代码之使用mysqli对象

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 <?php   //连接参数   $host="localhost";   $user="root";   $pwd="111111";   $db="test";      $mysqli =n

c# 面相对象2-之封装性

c# 面相对象2-之封装性 一.封装特性: 这是一种隐藏的特性.可以用一个公式来展示类的封装特性: 封装的类=数据  +  对此数据进行的操作(即算法) 通俗的说,封装就是:包起外界不必要知道的东西,只向外界展露可供展示的东西. 在面向对象理论中,封装这个概念拥有更为宽广的含义.小到一个简单的数据结构,大到一个完成的软件子系统,静态的如某个软件系统要收集数据信息项,动态的如某个工作处理的流程,都可以封装到一个类中. 具备这种封装的意识,是掌握面向对象分析与设计技巧的关键 二.类的成员: 成员变量

返回对象result封装

import tf56.sofa.serializer.JsonGenerateUtil; /** * 返回对象Result封装 * @athor changmeng.liu * @date 2014-7-25 * @version 1.0 * @update */ public class Result { final String SUCCESS="success"; final String ERROR="error"; private String coun

对象的封装特性

四.对象的封装特性 1)什么是封装? 就是将对象的成员隐藏起来,不让其直接在类的外部访问,要通过一定的方法对封装起来的成员进行访问控制: 面向对象的封装特性并不是不让成员被访问,而是要对其进行访问控制: 2)修饰词 var  公有的(过时) 可以在类的外部直接通过对象访问(赋值和输出):在类的内部可以通过$this来进行访问: public  公有的 等同于var:既可以修饰成员属性,又可以修饰成员方法:public修饰的成员在类的外部可以使用对象来调用,在类的内部使用$this进行访问:成员方

JAVA实验4 类与对象(封装继承多态等机制的使用)

实验四 类与对象(封装.继承.多态等机制的使用) 实验内容: 1. 编写一个名为TwoDimensionalShape的抽象类,拥有属性area和circumference表示面积和周长,以及抽象方法getArea()和getCircumference(),用于获取面积和周长. 2. 编写Printable接口,包括一个抽象方法printShapeInfo,用于输出图形信息. 3. 分别编写Rectangle.Triangle.Circular三个类,用于描述矩形.三角形和圆形,要求继承于Two