PHP操作mysql类的封装

版本一:

conn=mysqli_connect($this->host,$this->username,$this->password,$this->dbname);
            if (!$this->conn) {
                mysqli_error($this->conn);
                die("连接失败".mysqli_error($this->conn));
            }
            //设置访问数据库的编码
            mysqli_query($this->conn, "set names utf8") or die(mysqli_error($this->conn));
        }
        
        //执行dql语句
        public function execute_dql($sql) {
            $res=mysqli_query($this->conn,$sql) or die(mysqli_error($this->conn));
            
            return $res;
        }
        
        //执行dql语句,但是返回的是一个数组
        public function execute_dql2($sql) {
            $arr=array();
            $res=mysqli_query($this->conn,$sql) or die(mysqli_error($this->conn));
            
            //$i=0;
            while($row=mysqli_fetch_assoc($res)) {
                //$arr[$i++]=$row;
                $arr[]=$row;
            }
            
            //这里就可以马上把$res关闭
            mysqli_free_result($res);
            return $arr;
        }
        
        //考虑分页情况的查询,这是一个比较通用的并体现oop编程思想的代码
        //$sql1="select * from where 表名 limit 0,6";
        //$sql2="select * from count(id) from 表名";
        public function execute_dql_fenye($sql1,$sql2,$fenyePage) {
            //分页显示的数据
            $res=mysqli_query($this->conn, $sql1) or die(mysqli_error($this->conn));
            $arr=array();
            while($row=mysqli_fetch_assoc($res)) {
                $arr[]=$row;
            }
            
            //这里就可以马上把$res关闭
            mysqli_free_result($res);
            
            $res2=mysqli_query($this->conn, $sql2) or die(mysqli_error($this->conn));
            if($row=mysqli_fetch_row($res2)) {
                $fenyePage->pageCount=ceil($row[0]/$fenyePage->pageSize);
                $fenyePage->rowCount=$row[0];
            }
            
            mysqli_free_result($res2);
            
            $fenyePage->res_array=$arr;
            
            
            $navigation="";
            $navigation.= "首页 ";
            
            //显示上一页和下一页
            if($fenyePage->pageNow > 1) {
                $prePage=$fenyePage->pageNow-1;
                $navigation.= "上一页 ";
            }
            
            $page_whole=10;//整体翻几页
            $start=(floor(($fenyePage->pageNow-1)/$page_whole))*$page_whole+1;
            $end=$start+$page_whole;
            
            //整体每10页向前翻页
            //如果当前pageNow在1-10
            if ($fenyePage->pageNow>$page_whole)
                $navigation.= "<< ";
            
            for(;$start<$end && $start<=$fenyePage->pageCount;$start++) {
                $navigation.= "[$start]";
            }
            
            if($start <= $fenyePage->pageCount)
                $navigation.= " >>";
            
            //显示上一页和下一页
            if($fenyePage->pageNow < $fenyePage->pageCount) {
                $nextPage=$fenyePage->pageNow+1;
                $navigation.= " 下一页 ";
            }
            
            
            $navigation.= "尾页 ";
            
            //显示当前页和共有多少页
            $navigation.= "第{$fenyePage->pageNow}页/共{$fenyePage->pageCount}页";
            
            $fenyePage->navigation=$navigation;
        }
        
        //执行dml语句
        public function execute_dml($sql) {
            $b=mysqli_query($this->conn, $sql) or die(mysqli_error($this->conn));
            if(!$b) {
                return 0;
            } else {
                if(mysqli_affected_rows($this->conn)>0) {
                    return 1;//表示执行成功
                } else {
                    return 2;//表示没有行收到影响
                }
            }
        }
        
        //关闭连接的方法
        public function close_connect() {
            if(!empty($this->conn))
                mysqli_close($this->conn);
        }
    }
?>

版本二:(来源于慕课网的学习)

err(mysql_error());
			}

			if(!mysql_select_db($dbname, $con)) { //mysql_select_db 选择数据库的函数
				$this->err(mysql_error());
			}
			mysql_query("set names ".$dbcharset); //使用mysql_query 设置编码,格式: mysql_query("set names utf8")
		}

		/*
			执行sql语句
			@param string $sql
			@return bool 返回执行成功、资源或执行失败
		 */
		function query($sql) {
			if(!($query = mysql_query($sql))) { //使用mysql_query函数执行sql语句
				$this->err($sql."
".mysql_error()); //mysql_error报错 } else { return $query; } } /* 列表 @param source $query sql语句通过mysql_query 执行出来的资源 @return array 返回列表数组 */ function findAll($query) { while($rs = mysql_fetch_array($query, MYSQL_ASSOC)) { //mysql_fetch_array函数把资源换为数组,一次转换出一行出来 $list[] = $rs; } //这里应该释放结果集吧 //mysql_free_result($query) return isset($list) ? $list : ""; } /* 单条 @param source $query sql语句通过mysql_query执行出来的资源 return array 返回单条信息数据 */ function findOne($query) { $rs = mysql_fetch_array($query, MYSQL_ASSOC); return $rs; } /* 指定行的指定字段的值 @param source $query sql语句通过mysql_query执行出来的资源 return array 返回指定行的指定字段的值 */ function findResult($query, $row = 0, $field = 0) { $rs = mysql_result($query, $row, $field); return $rs; } /* 添加函数 @param string $table 表名 @param array $arr 添加数组(包含字段和值的一维数组) */ function insert($table, $arr) { // $sql = "insert into 表名(多个字段) values(多个值)"; // mysql_query($sql) foreach ($arr as $key => $value) { $value = mysql_real_escape_string($value); $keyArr[] = "`".$key."`"; //把$arr数组当中的键名保存到$keyArr数组当中 insert into test(`a`,`b`,`c`) values... 其中 ` 防止字段中因关键字而出错 $valueArr[] = "'".$value."'"; //把$arr数组当中的键值保存到$valueArr当中,因为值多为字符串,而sql语句里面insert当中如果值是字符串的话要加单引号,所以这个地方要加上单引号 } $keys = implode(",", $keyArr); //implode函数是把数组组合成字符串 implode(分隔符,数组) $values = implode(",", $valueArr); $sql = "insert into ".$table."(".$keys.") values(".$values.")"; //sql的插入语句 格式:insert into 表(多个字段) values(多个值) $this->query($sql); //调用类自身的query(执行)方法执行这条sql语句 注:$this指代自身 return mysql_insert_id(); } /* 修改函数 @param string $table 表名 @param array $arr 修改数组(包含字段和值的一维数组) @param string $where 条件 */ function update($table, $arr, $where) { //update 表名 set 字段=字段值 where .... foreach($arr as $key=>$value) { $value = mysql_real_escape_string($value); $keyAndvalueArr[] = "`".$key."`='".$value."'"; } $keyAndvalues = implode(",", $keyAndvalueArr); $sql = "update ".$table." set ".$keyAndvalues." where ".$where; //修改操作 格式update } /* 删除函数 @param string $table 表名 @param string $where 条件 */ function del($table, $where) { $sql = "delete from ".$table." where ".$where; //删除sql语句 格式:delete from 表名 where 条件 return $this->query($sql); } } ?>


DB引擎工厂类

connect($config);
		}

		public static function query($sql) {
			return self::$db->query($sql);
		}

		public static function findAll($sql) {
			$query = self::$db->query($sql);
			return self::$db->findAll($query);
		}

		public static function findOne($sql) {
			$query = self::$db->query($sql);
			return self::$db->findOne($query);
		}

		public static function findResult($sql, $row = 0, $field = 0) {
			$query = self::$db->query($sql);
			return self::$db->findResult($query, $row, $field);
		}
		
		public static function insert($table, $arr) {
			return self::$db->insert($table, $arr);
		}

		public static function update($table, $arr, $where) {
			return self::$db->update($table, $arr, $where);
		}

		public static function del($table, $where) {
			return self::$db->del($table, $where);
		}
	}
?>



你可能感兴趣的:(PHP)