1. 程式人生 > >mysqli 對象風格封裝

mysqli 對象風格封裝

const 函數 truct 多條 color ret more username 獲取

<?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 對象風格封裝