PHP自写的一个MYSQL操作类

在此做个记录

PHP类的几个知识点

self::$静态属性名

$this->一般属性名或方法名


单例类 四个要点(三私一公)

1禁止构造对象---禁止new()  private  __construct(){} 私有空定义

2禁止克隆对象-- clone       private __clone(){} 私有空定义

3定义单例对象属性  private static $对象名   私有静态空定义

4定义入口方法 public static function 方法名() 公共静态


扫描二维码关注公众号,回复: 116246 查看本文章

面向对向


 
 
<?php
class mysqli_object_db{
	//*********************************
	//public protected private
	
	private $mysqli;//连接对象
	private $result;//结果对象
	public $arr;//结果数组
	//定义连接参数
	public $cs=array(
		'host'       =>'127.0.0.1',
		'port'       =>'3306',
		'username'   =>'root',
		'password'   =>'',
		'dbname'     =>'mysql',
		'charset'    =>'utf8',
	);
	
	//*********************************
	//定义单例(三私一公)
	//私有化静态对象
	private static $db;

	//私有化构造:禁止构造---new()
	private function __construct(){}

	//私有化克隆:禁止克隆
	private function __clone(){}

	//单例对象入口
	public static function getdb($arr=null){
		//如果不存在对象,则建立对象
		if(!isset(self::$db)){self::$db=new self();}

		//如果有连接参数
		if($arr){
			if(isset($arr['host']))self::$db->cs['host']=$arr['host'];
			if(isset($arr['port']))self::$db->cs['port']=$arr['port'];
			if(isset($arr['username']))self::$db->cs['username']=$arr['username'];
			if(isset($arr['password']))self::$db->cs['password']=$arr['password'];
			if(isset($arr['dbname']))self::$db->cs['dbname']=$arr['dbname'];
			if(isset($arr['charset']))self::$db->cs['charset']=$arr['charset'];	
		}

		return self::$db;
	}

	//*****************************************
	//连接成员方法
	private function connect(){
		//$this->db = @ new mysqli(
		$this->mysqli = @ new mysqli(
			$this->cs["host"].":".$this->cs["port"], 
			$this->cs["username"],
			$this->cs["password"]
			);

		/* 检查连接 */
		if (mysqli_connect_errno()) {
		   echo "<br>*************************************";
		   echo "<br>连接失败!!!";
		   echo "<br>错误代码:".mysqli_connect_errno();
		   echo "<br>错误信息:".mysqli_connect_error();
		   echo "<br>*************************************";
		  exit("<br>stop!!!");
		}	
	}
	//设置编码
	private function charset($char="utf8"){
		$this->mysqli->query("set names $char");
	}
	//打开数据库
	private function usedb($dbname="mysql"){
		$this->mysqli->query("use $dbname");
	}
	//数据库准备
	private function ready(){
		$this->charset($this->cs['charset']);
		$this->usedb($this->cs['dbname']);
	}
	//执行SQL命令
	//$sql---命令:string   
	//$erro----报错开关:任意不是NULL的值0123....
	private function query($sql,$erro=null){
		$this->connect();
		$this->ready();
		$this->result = $this->mysqli->query($sql);
		if($erro!==null){
			if(!$this->result){
				echo "<br>****************************";
				echo "<br>执行失败";
				echo "<br>命令:".$sql;
				echo "<br>错误代码:".$this->mysqli->errno;
				echo "<br>错误信息:".$this->mysqli->error;
				echo "<br>****************************";
				die("<br>STOP!!!");
			}
		}
		return $this->result;
	}
	//公开的有返回的命令执行
	//返回结果保存在$this-arr
	//结果类型 array  true/false  三种
	//参数:
	//$sql---MYSQL命令
	//$index---返回数据的下标类型,默认为字段下标
	//         类型: 'n'---数值下标
	//               'a'---字段下标
	//               'b'---数值/字段(两种)双下标
	public function queryarr($sql=null,$index='a'){
		

		if($sql===null){return;}
		//$r=$this->query($sql,0);//加第二个参数打开报错
		$res=$this->query($sql);
		//结果对象只有三种情况
		//1.正确执行,但没有返回结果集.---布尔值:true
		//2.执行失败---布尔值:false
		//3.正确执行,有返回结果,返回一个对象----对象:object
		//可以从对象中取出结果存入本地的数组
		//注意一种情况,就是返回空数组.array{}
		if($res===true){
			$this->arr=true;
		}else{
			if($res===false){
				$this->arr=false;
			}else{
				//取得全部数据 三类下标
				switch ($index) {
					case 'a':
						$this->arr=$res->fetch_all(MYSQLI_ASSOC);//字段下标
						break;
					case 'n':
						$this->arr=$res->fetch_all(MYSQLI_NUM);//数值下标
						break;
					case 'b':
						$this->arr=$res->fetch_all(MYSQLI_BOTH);//双下标
						break;	
				}
				$res->free();//释放结果对象
			}
		}
		$this->mysqli->close();//关闭连接对象
		$this->mysqli=null;//复位
		$this->result=null;//复位
		return $this->arr;

	}
	//**********************
	//纯输出数据到表格table
	public function tab($arr)
	{
		if(gettype($arr)!='array'){
			if($arr===true){
				$arr=array(array('true'));
			}else{
				$arr=array(array('false'));
			}
		}

		if($arr==null)$arr=array(array("null"));

		echo "<table border='1'>";
		foreach($arr as $k1=>$v1)
		{				
			//**********************
			//表头
			if($k1==0)
			{
				echo "<tr>";
				foreach($v1 as $k2=>$v2)
				{
					
					echo "<th>";
					echo $k2;
					echo "</th>";
				}
				echo "</tr>";
			}
			//**********************
			//内容
			echo "<tr>";
			foreach($v1 as $k2=>$v2)
			{
				
				echo "<td>";
				echo $v2;
				echo "</td>";
			}
			echo "</tr>";
		}
		echo "</table>";
	}
	//SQL字符转义
	public function escape($str){
		$this->connect();
		$s=$this->mysqli->escape_string($str);
		$this->mysqli->close();//断开数据库服务器的连接
		$this->mysqli=null;
		return $s;
	}



	//测试成员方法
	public function test(){
		/*
		$a=123;
		$b=$this->escape($a);
		echo "<br>asdg asdf $b";
		*/
		//$sql="select session_content from session where session_id='$sess_id'";
		//增
		//$sql="replace into session values('abcd','cccc',unix_timestamp())";
		//$sql="replace into session values('aaaa','cccc',unix_timestamp())";
		//$sql="insert into session values('abcd11','cccc1',unix_timestamp())";
		//$sql="select * from session where session_id='abcd'";
		//$sql="select * from session where session_id='abcd222'";
		//$sql="set a=1";
		//$sql="select * from session ";
		//$sql="select * from session where session_id='777'";
		//$this->queryarr($sql);
		//$this->connect();
		//$this->ready();
		
		//echo "<br>".$this->cs['charset'];
		//echo "<pre>";
		//var_dump($this->arr);
		//echo "</pre>";

		//$this->tab($this->arr);
		
	}
}
	
$cs=array(
		'host'       =>'127.0.0.1',
		'port'       =>'3306',
		'username'   =>'xxxx',
		'password'   =>'1234abcd',
		'dbname'     =>'xxxx',
		'charset'    =>'utf8',
);

$op1=mysqli_object_db::getdb($cs);
echo "<pre>";
//var_dump($op1);
echo "</pre>";

$op1->test();


面向过程

<?php
class mysqli_process_db{
	//*********************************
	//public protected private
	
	private $link;//连接对象
	private $result;//结果对象
	public $arr;//结果数组
	//定义连接参数
	public $cs=array(
		'host'       =>'127.0.0.1',
		'port'       =>'3306',
		'username'   =>'root',
		'password'   =>'',
		'dbname'     =>'mysql',
		'charset'    =>'utf8',
	);
	
	//*********************************
	//定义单例(三私一公)
	//私有化静态对象
	private static $db;

	//私有化构造:禁止构造---new()
	private function __construct(){}

	//私有化克隆:禁止克隆
	private function __clone(){}

	//单例对象入口
	public static function getdb($arr=null){
		//如果不存在对象,则建立对象
		if(!isset(self::$db)){self::$db=new self();}

		//如果有连接参数
		if($arr){
			if(isset($arr['host']))self::$db->cs['host']=$arr['host'];
			if(isset($arr['port']))self::$db->cs['port']=$arr['port'];
			if(isset($arr['username']))self::$db->cs['username']=$arr['username'];
			if(isset($arr['password']))self::$db->cs['password']=$arr['password'];
			if(isset($arr['dbname']))self::$db->cs['dbname']=$arr['dbname'];
			if(isset($arr['charset']))self::$db->cs['charset']=$arr['charset'];	
		}
		return self::$db;
	}
	//*****************************************
	//连接成员方法
	private function connect(){
		//$this->db = @ new mysql(
		$this->link = @mysqli_connect(
			$this->cs["host"].":".$this->cs["port"], 
			$this->cs["username"],
			$this->cs["password"]
			);

		/* 检查连接 */
		if (mysqli_connect_errno()) {
		   echo "<br>*************************************";
		   echo "<br>连接失败!!!";
		   echo "<br>错误代码:".mysqli_connect_errno();
		   echo "<br>错误信息:".mysqli_connect_error();
		   echo "<br>*************************************";
		  exit("<br>stop!!!");
		}	
	}
	//设置编码
	private function charset($char="utf8"){
		mysqli_query($this->link,"set names $char");
	}
	//打开数据库
	private function usedb($dbname="mysql"){
		mysqli_query($this->link,"use $dbname");
	}
	//数据库准备
	private function ready(){
		$this->charset($this->cs['charset']);
		$this->usedb($this->cs['dbname']);
	}

	//执行SQL命令
	//$sql---命令:string   
	//$erro----报错开关:任意不是NULL的值0123....
	private function query($sql,$erro=null){
		$this->connect();
		$this->ready();
		$this->result =mysqli_query($this->link,$sql);
		if($erro!==null){
			if(!$this->result){
				echo "<br>****************************";
				echo "<br>执行失败";
				echo "<br>命令:".$sql;
				echo "<br>错误代码:".mysqli_errno($this->link);
				echo "<br>错误信息:".mysqli_error($this->link);
				echo "<br>****************************";
				die("<br>STOP!!!");
			}
		}
		return $this->result;
	}

	//公开的有返回的命令执行
	//返回结果保存在$this-arr
	//结果类型 array  true/false  三种
	//参数:
	//$sql---MYSQL命令
	//$index---返回数据的下标类型,默认为字段下标
	//         类型: 'n'---数值下标
	//               'a'---字段下标
	//               'b'---数值/字段(两种)双下标
	public function queryarr($sql=null,$index='a'){
		

		if($sql===null){return;}
		//$res=$this->query($sql,0);//加第二个参数打开报错
		$res=$this->query($sql);
		//结果对象只有三种情况
		//1.正确执行,但没有返回结果集.---布尔值:true
		//2.执行失败---布尔值:false
		//3.正确执行,有返回结果,返回一个对象----对象:object
		//可以从对象中取出结果存入本地的数据
		if($res===true){
			$this->arr=true;
		}else{
			if($res===false){
				$this->arr=false;
			}else{
				//取得数组全部 
				//MYSQLI_ASSOC/字段下标, MYSQLI_NUM/数字下标, MYSQLI_BOTH/字段和数字双下标
				switch ($index) {
					case 'a'://字段下标
						$this->arr=mysqli_fetch_all($res,MYSQLI_ASSOC);
						break;
					case 'n'://数值下标
						$this->arr=mysqli_fetch_all($res,MYSQLI_NUM);
						break;
					case 'b':
						$this->arr=mysqli_fetch_all($res,MYSQLI_BOTH);
						break;				
				}
				mysqli_free_result ($res);//释放数据库服务器的结果资源
			}
		}
		mysqli_close ($this->link);//断开数据库服务器的连接
		$this->link=null;//复位
		$this->result=null;//复位
		return $this->arr;
	}

	//**********************
	//纯输出数据到表格table
	public function tab($arr)
	{
		if(gettype($arr)!='array'){
			if($arr===true){
				$arr=array(array('true'));
			}else{
				$arr=array(array('false'));
			}
		}

		if($arr==null)$arr=array(array("null"));

		echo "<table border='1'>";
		foreach($arr as $k1=>$v1)
		{				
			//**********************
			//表头

			if($k1==0)
			{
				echo "<tr>";
				foreach($v1 as $k2=>$v2)
				{
					
					echo "<th>";
					echo $k2;
					echo "</th>";
				}
				echo "</tr>";
			}
			//**********************
			//内容
			echo "<tr>";
			foreach($v1 as $k2=>$v2)
			{
				
				echo "<td>";
				echo $v2;
				echo "</td>";
			}
			echo "</tr>";
		}
		echo "</table>";
	}

	public function escape($str){
		$this->connect();
		$s=mysqli_escape_string($this->link,$str);
		mysqli_close ($this->link);//断开数据库服务器的连接
		$this->link=null;
		return $s;
	}







	//测试成员方法
	public function test(){
/*
		$a=123;
		$this->connect();
		$b=mysqli_escape_string($this->link,$a);
		mysqli_close ($this->link);//断开数据库服务器的连接
		$this->link=null;
		$c="asdf asd $b";
		echo $c;
*/

		//$sql="select session_content from session where session_id='$sess_id'";
		//增
		//$sql="replace into session values('abcd','cccc',unix_timestamp())";
		//$sql="replace into session values('aaaa','cccc',unix_timestamp())";
		//$sql="insert into session values('abcd11','cccc1',unix_timestamp())";
		//$sql="select * from session where session_id='abcd'";
		//$sql="select * from session where session_id='abcd222'";
		//$sql="set a=1";
		$sql="select * from session ";
		//$sql="select * from session where session_id='777'";
		//$sql="select session_content from session where session_id='abcd'";
		$this->queryarr($sql);
		//$this->connect();
		//$this->ready();
		
		//echo "<br>".$this->cs['charset'];
		//echo "<pre>";
		//var_dump($this->arr);
		//echo "</pre>";

		$this->tab($this->arr);
		
	}

}

 
 


猜你喜欢

转载自blog.csdn.net/ddv1999/article/details/79794879