怎么在PHP中定义DB 数据库连接类
创始人
2024-12-07 02:42:02
0次

php有什么特点

1、执行速度快。2、具有很好的开放性和可扩展性。3、PHP支持多种主流与非主流的数据库。4、面向对象编程:PHP提供了类和对象。5、版本更新速度快。6、具有丰富的功能。7、可伸缩性。8、功能全面,包括图形处理、编码与解码、压缩文件处理、xml解析等。

声明:

近期观看了一节 PHP 消息队列视频,对于讲师WiconWang提供的代码,在此分享一下,希望能对爱学习的小伙伴有所帮助…

host = 'localhost';
  $this->port = '3306';
  $this->user = 'root';
  $this->pass = 'root';
  $this->db = 'imooc';
  $this->charset= 'utf8';
  //连接数据库
  $this->db_connect();
  //选择数据库
  $this->db_usedb();
  //设置字符集
  $this->db_charset();
  }
  //连接数据库
  private function db_connect(){
  $this->link=mysqli_connect($this->host.':'.$this->port,$this->user,$this->pass);
  if(!$this->link){
   echo "数据库连接失败
";    echo "错误编码".mysqli_errno($this->link)."
";    echo "错误信息".mysqli_error($this->link)."
";    exit;   }   }   //设置字符集   private function db_charset(){    mysqli_query($this->link,"set names {$this->charset}");   }   //选择数据库   private function db_usedb(){    mysqli_query($this->link,"use {$this->db}");   }   //私有的克隆   private function __clone(){    die('clone is not allowed');   }   //公用的静态方法   public static function getIntance(){    if(self::$dbcon==false){    self::$dbcon=new self;    }    return self::$dbcon;   }   //执行sql语句的方法   public function query($sql){    $res=mysqli_query($this->link,$sql);    if(!$res){    echo "sql语句执行失败
";    echo "错误编码是".mysqli_errno($this->link)."
";    echo "错误信息是".mysqli_error($this->link)."
";    }    return $res;   }   //获得最后一条记录id   public function getInsertid(){    return mysqli_insert_id($this->link);   }   /**   * 查询某个字段   * @param   * @return string or int   */   public function getOne($sql){    $query=$this->query($sql);    return mysqli_free_result($query);   }   //获取一行记录,return array 一维数组   public function getRow($sql,$type="assoc"){    $query=$this->query($sql);    if(!in_array($type,array("assoc",'array',"row"))){     die("mysqli_query error");    }    $funcname="mysqli_fetch_".$type;    return $funcname($query);   }   //获取一条记录,前置条件通过资源获取一条记录   public function getFormSource($query,$type="assoc"){   if(!in_array($type,array("assoc","array","row")))   {    die("mysqli_query error");   }   $funcname="mysqli_fetch_".$type;   return $funcname($query);   }   //获取多条数据,二维数组   public function getAll($sql){    $query=$this->query($sql);    $list=array();    while ($r=$this->getFormSource($query)) {    $list[]=$r;    }    return $list;   }   public function selectAll($table,$where,$fields='*',$order='',$skip=0,$limit=1000)   {        if(is_array($where)){           foreach ($where as $key => $val) {             if (is_numeric($val)) {               $condition = $key.'='.$val;             }else{               $condition = $key.'=\"'.$val.'\"';             }           }        } else {         $condition = $where;        }        if (!empty($order)) {          $order = " order by ".$order;        }        $sql = "select $fields from $table where $condition $order limit $skip,$limit";        $query = $this->query($sql);        $list = array();        while ($r= $this->getFormSource($query)) {          $list[] = $r;        }        return $list;   }    /**    * 定义添加数据的方法    * @param string $table 表名    * @param string orarray $data [数据]    * @return int 最新添加的id    */    public function insert($table,$data){    //遍历数组,得到每一个字段和字段的值    $key_str='';    $v_str='';    foreach($data as $key=>$v){    // if(empty($v)){    //  die("error");    // }     //$key的值是每一个字段s一个字段所对应的值     $key_str.=$key.',';     $v_str.="'$v',";    }    $key_str=trim($key_str,',');    $v_str=trim($v_str,',');    //判断数据是否为空    $sql="insert into $table ($key_str) values ($v_str)";    $this->query($sql);   //返回上一次增加操做产生ID值    return $this->getInsertid();   }   /*   * 删除一条数据方法   * @param1 $table, $where=array('id'=>'1') 表名 条件   * @return 受影响的行数   */   public function deleteOne($table, $where){    if(is_array($where)){     foreach ($where as $key => $val) {      $condition = $key.'='.$val;     }    } else {     $condition = $where;    }    $sql = "delete from $table where $condition";    $this->query($sql);    //返回受影响的行数    return mysqli_affected_rows($this->link);   }   /*   * 删除多条数据方法   * @param1 $table, $where 表名 条件   * @return 受影响的行数   */   public function deleteAll($table, $where){    if(is_array($where)){     foreach ($where as $key => $val) {      if(is_array($val)){       $condition = $key.' in ('.implode(',', $val) .')';      } else {       $condition = $key. '=' .$val;      }     }    } else {     $condition = $where;    }    $sql = "delete from $table where $condition";    $this->query($sql);    //返回受影响的行数    return mysqli_affected_rows($this->link);   }   /**   * [修改操作description]   * @param [type] $table [表名]   * @param [type] $data [数据]   * @param [type] $where [条件]   * @return [type]   */   public function update($table,$data,$where,$limit=0){    //遍历数组,得到每一个字段和字段的值    $str='';   foreach($data as $key=>$v){    $str.="$key='$v',";   }   $str=rtrim($str,',');    if(is_array($where)){     foreach ($where as $key => $val) {      if(is_array($val)){       $condition = $key.' in ('.implode(',', $val) .')';      } else {       $condition = $key. '=' .$val;      }     }    } else {     $condition = $where;    }     if (!empty($limit)) {       $limit = " limit ".$limit;     }else{       $limit='';     }   //修改SQL语句   $sql="update $table set $str where $condition $limit";   $this->query($sql);   //返回受影响的行数   return mysqli_affected_rows($this->link);   } } ?>

使用方法

  • 对DB类中__construct()中的配置信息,进行符合自己数据库的修改

  • include 引入DB类

  • 使用DB类中的方法需要先进行实例化,以插入数据为例:

$db = DB::getIntance();
$insert_data = ['order_id'=>'10010','order_amount' = '200.00','status'=> 1];
$res = $db->insert('order_info',$insert_data);

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...