框架数据连接类

class db{
     /**
      * 定义数据库连接
      */
    /**
     * return 返回一个值叫做链式调用
     *每执行完一个方法就会返回当前对象
     *返回的对象 可以调用类中的成员变量和成员方法
     */
    protected $mysqli; //连接工具

    protected $table;  //数据表

    protected $opt;  //存储条件

     function  __construct($table_name){  //定义一个数据库连接

            $this->config($table_name);

    }
     protected function config($table_name){

            $this->mysqli=new mysqli(HOST, USER, PWD, DBBASE);
            $this->table=$table_name;  //表名
            if(mysqli_connect_errno()){

                  echo "数据库连接错误".mysqli_connect_erron();
                  exit();

            }
            $this->mysqli->query("set names ‘latin1‘");
            $this->opt[‘filed‘]="*"; //设置默认查询字段
            $this->opt[‘where‘]=$this->opt[‘limit‘]=$this->opt[‘order‘]=$this->opt[‘group‘]=‘ ‘; //设置他们的条件都为空
          }

          /**
           * 获取表的字段
           */
          function fileds(){
                $result=$this->mysqli->query("DESC{$this->table}"); //查询表结构
                $filedsarray=array();
                while ($rows=$result->fetch_assoc()!=false){ //循环字段关联数组
                                    $filedsarray[]=$rows[‘Field‘];

      }
                    return $filedsarray;
      }
      /**
       * 查询表的字段
       *
       */
      function filed($filed){
            /*首先$filed就是字段 查询的字段 首先判断获取的字段是否是字符串
             *
             */
          if (is_string($filed)){

               $filedarry=explode(",", $filed);  /*分割字符串*/
          }else{
                $filedarry=$filed;
                  }
          if(is_array($filedarry)){
              $filed="";
              foreach ($filedarry as $v){
                  $filed .= "`" . $v . "`" . ",";
              }
           }
           return rtrim($filed,",");
  }
  /**
   * 条件方法where
   */
  function where($where){
       if(is_string($where)){
             $this->opt[‘where‘]="WHERE".$where;
       }else{
           $this->opt[‘where‘]="";
       }
       return $this;
   }
   /**
    * limit 条件
    */

   function limit($limit){
       if(is_string($limit)){
           $this->opt[‘limit‘]="LIMIT".$limit;
       }else{
           $this->opt[‘limit‘]="";

       }
       return $this;
   }
   /**
    * order by 条件
    */
   function order($order){
         if (is_string($order)){
             $this->opt[‘order‘]="ORDER BY".$order;
         }else{
             $this->opt[‘order‘]="";
         }
         return $this;
    }

    /**
     * group by 调教
    */
    function group($group){
        if (is_string($group)){
            $this->opt[‘group‘]="GROUP BY".$group;
        }else{
            $this->opt[‘group‘]="";
        }
        return $this;
    }
      /**
       * select语句查询
       */
    function select(){
        /**
         * $sql=select * from 表名 where limiy order by group by
         */
        $sql="SELECT {$this->opt[‘filed‘]} FROM {$this->table} {$this->opt[‘where‘]}{$this->opt[‘order‘]}{$this->opt[‘group‘]}{$this->opt[‘limit‘]}";

        return $this->sql($sql);
     }
     /**
      * delete 删除语句
      */
     function delate($id=""){
         if($id==""&&empty($this->opt[‘where‘])) die ("获取的查询条件不能为空");
         if($id!=""){
            if(is_array($id)){
                 $id=implode(",",$id);/*implode 将获取的数组分割成字符串 每分割一个加个逗号*/
             }
             $this->opt[‘where‘]="WHERE id IN(".$id.")";
         }
         /*delete from 表名 where 条件*/
         $sql="DELETE FROM {$this->table} {$this->opt[‘where‘]} {$this->opt[‘limit‘]}";
         echo $sql."<br/>";
         return $this->query($sql);
      }
      /**
       * 返回sql语句结果集
       */
    function sql($sql) {
        $result = $this->mysqli
        ->query ( $sql ) or die ( $this->dbError () );
        $resultArr = array ();
        while ( ($row = $result->fetch_assoc ()) != false ) {
            $resultArr [] = $row;
        }
        return $resultArr;
    }
      /**
       * insert语句
       */
      function insert($ins){
          is_array($ins) or die("非法数组");
          $fileds=$this->filed(array_keys($ins));
     var_dump($fileds);
          $values=$this->values(array_values($ins));
          var_dump($values);
          $sql="INSERT INTO {$this->table}(".$fileds.") VALUES(".$values.")";
          if($this->query($sql)>0){
              return $this->mysqli->insert_id;
          }
      }
      /**
       * 将数组转换字符串并进行转义
       */
      protected function values($value){
          if (!get_magic_quotes_gpc()){
              $str="";
              foreach ($value as $v){
                  $str.="‘".addslashes($v)."‘,";
              }
          }else{
              foreach ($value as $v){
              $str.="‘.$v.‘,";
              }
          }
          return rtrim($str,",");
      }
      /**
       * 没有结果集
       */
      function query($sql){
          $this->mysqli->query($sql)or die($this->error());
          return $this->mysqli->affected_rows; //返回前一个 Mysql 操作的受影响行数
      }
      /**
       * update 更新语句
       * update biao set 列明=新值 where 列明=某值
       */
      function update($up){
          is_array($sql)or die("非法字符串");
          if (empty($this->opt[‘where‘])) die("条件不能为空");
          $set="";
          $gpc=get_magic_quotes_gpc();
          while (list($k,$v)=each($up)){
                  $v = ! $gpc ? addslashes ( $v ) : $v;
            $set .= "`{$k}`=‘" . $v . "‘,";
          }
          $set=rtrim($set,",");
          $sql="UPDATE {$this->table} SET $set {$this->opt[‘where‘]}";
          return $this->query($sql);
  }
  /**
   * 查寻总记录记录数
   */
  function count($tablename=""){
      $tabname = $tabname == ‘‘ ? $this->table : $tabname;
      $sql = "SELECT `id` FROM {$tabname} {$this->opt[‘where‘]}";
      return $this->query ( $sql );
  }
    /**
     * 查询单机路数
     */
  function find($id){
      $sql = "SELECT {$this->opt[‘field‘]} FROM {$this->table}    WHERE `id` = {$id}";
      return $this->sql ( $sql );
  }
  /**
   * 返回错误
   */
  function error(){
      return $this->mysqli->error;
  }

}
时间: 2024-07-29 03:29:23

框架数据连接类的相关文章

实体类、数据访问类、属性扩展

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace 实体类_数据访问类.App_Code { public class Users { private string _username; //封装 /// <summary> /// 用户名 /// </summary> public

从0开始,一起搭框架、做项目(3)公共基础数据操作类 RepositoryBase

索引 [无私分享:从入门到精通ASP.NET MVC]从0开始,一起搭框架.做项目 目录索引 简述 今天我们写一个基础数据的操作类,如果里面有大家不理解的地方,可采取两种方式,第一:提出来,第二:会用就行.这个类呢我一般不去修改它,因为基础操作类,大家也可以直接拷贝到自己的项目中. 项目准备 我们用的工具是:VS 2013 + SqlServer 2012 + IIS7.5 希望大家对ASP.NET MVC有一个初步的理解,理论性的东西我们不做过多解释,有些地方不理解也没关系,会用就行了,用的多

C#连接层的数据访问类(简单版)

目前只写了与SqlServer的数据处理. 首先是静态工厂类. using System; using System.Configuration; namespace XPSoft.BaseLibrary.DataAccess { /// <summary> /// 数据访问对象的静态工厂类,用于创建不同类型的数据访问对象. /// </summary> public static class DataAccessFactory { /// <summary> ///

EF实体框架数据操作基类(转)

//----------------------------------------------------------------// Copyright (C) 2013 河南禄恒软件科技有限公司// // 功能描述:实体框架数据仓储的操作接口,包含增删改查接口////----------------------------------------------------------------using System;using System.Data.Entity.Infrastruct

EF实体框架数据操作基类

//----------------------------------------------------------------// Copyright (C) 2013 河南禄恒软件科技有限公司// // 功能描述:实体框架数据仓储的操作接口,包含增删改查接口////----------------------------------------------------------------using System;using System.Data.Entity.Infrastruct

BIM工程信息管理系统-EF实体框架数据操作基类

EF实体框架数据操作基类主要是规范增.改.查.分页.Lambda表达式条件处理,以及异步操作等特性,这样能够尽可能的符合基类这个特殊类的定义,实现功能接口的最大化重用和统一. 1.程序代码 /// <summary> /// MSSQL数据库 数据层的父类 /// </summary> /// <typeparam name="T"></typeparam> public class BaseDAL<T> where T :

iBATIS 框架主要的类层次结构

iBATIS 框架主要的类层次结构 总体来说 iBATIS 的系统结构还是比较简单的,它主要完成两件事情: 根据 JDBC 规范建立与数据库的连接: 通过反射打通 Java 对象与数据库参数交互之间相互转化关系. iBATIS 的框架结构也是按照这种思想来组织类层次结构的,其实它是一种典型的交互式框架.先期准备好交互的必要条件,然后构建一个交互的环境,交互环境中还划分成会话,每次的会话也有一个环境.当这些环境都准备好了以后,剩下的就是交换数据了.其实涉及到网络通信,一般都会是类似的处理方式. 图

数据访问类的封装与三大类

数据访问类的封装: 数据访问类分为三大类:连接类,实体类,数据访问类. 1.连接类: public class lianjie { private static string connection="server=.;database=mydb;uid=sa;pwd=789234178"; public static Sqlconnection conn { get { SqlConnection conn=new Sqlconnection(connecction); return

spring下,druid,c3p0,proxool,dbcp四个数据连接池的使用和配置

由于那天Oracle的数据连接是只能使用dbcp的数据库连接池才连接上了,所以决定试一下当下所有得数据库连接池连接orcale和mysql,先上代码 配置文件的代码 1 #=================dbcp连接池======================# 2 #Oracle数据库连接 3 #jdbc_driverClassName=oracle.jdbc.driver.OracleDriver 4 #jdbc_url=jdbc:oracle:thin:@localhost:1521: