mysqli 对象风格封装
Posted 皇家玄学团
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 对象风格封装的主要内容,如果未能解决你的问题,请参考以下文章