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 过程化风格的主要内容,如果未能解决你的问题,请参考以下文章