1. 程式人生 > >運用工廠模式封裝增刪改查,select查詢條件

運用工廠模式封裝增刪改查,select查詢條件

config.php檔案    資料庫引數

<?php 
$dsn=array(
   'localhost'=> '127.0.0.1',
   'username' => 'root',
    'password' => 'root',
    'charset'  => 'utf8',
    'dbname'   => "advanced",
    'type'   => 'Mysql',
   );
DB.class.php    工廠定義
<?php  
include 'MysqlDB.class.php';
/**
*  
*/
class DBFactory{ public static function create($dsn){ $name=$dsn['type']."DB"; return new $name($dsn); } }
DB.interface.php    介面檔案
<?php  
interface DB{
   //增加 arr為傳入的陣列
public function insert($arr);
   //查詢欄位
public function select($where);
  //條件查詢
public function where($where
,$con); //新增and查詢條件 public function andwhere($where); //新增or查詢條件 public function orwhere($where); //分組查詢 public function groupBy($params); //having查詢 public function having($params); //增加篩選條件 public function addhaving($params); //排序 public function orderBy($params); //limit public function limit($offset
,$start=0); //修改 public function update($arr,$where='',$con='AND'); //刪除 public function delete($del,$con='AND'); //執行sql語句 public function sqlquery($sql); //獲取一條資料 public function One(); //獲取所有資料 public function All(); //獲取新增id public function getlastInsertId(); //獲取影響條數 public function getRow(); //獲取結果集 public function get(); }
MysqlDB.class.php    封裝的方法
<?php
include 'DB.interface.php';
/**
* 
*/
class MysqlDB implements DB{
    //表名稱
public $table;
    //當前資料庫物件
public $db;
    //sql語句查詢條件
public $condition;
    //查詢出的物件結果集
public $obj;
    
   public function __construct(){
   }
    //按照配置連線資料庫
public function connect($dsn){
         $localhost=$dsn['localhost'];
        $username=$dsn['username'];
        $password=$dsn['password'];
        $dbname=$dsn['dbname'];
        $mysqli = new mysqli("$localhost","$username","$password","$dbname");
          if ($mysqli->connect_error) {
          die('Error : ('. $mysqli->connect_errno .') '. $mysqli->connect_error);
        }
       $charset=$dsn['charset'];
        $mysqli->query("set names $charset");
        $this->db=$mysqli;
       return $this;
   }
     //執行sql語句
public function sqlquery($sql){
       $res=$this->db->query($sql);
       $arr=array();
       while ($row = mysqli_fetch_assoc($res)){
        $arr[]=$row;
       }
       return $arr;
    }
    //執行查詢所有陣列
public function All(){
       $result=$this->obj;
       //var_dump($result);die;
$arr=array();
       while ($row = mysqli_fetch_assoc($result)){
        $arr[]=$row;
       }
       return $arr;
    }
    //獲取一條資料
public function One(){
       $result=$this->obj;
       $row = mysqli_fetch_assoc($result);
       return $row;
    }
    //獲取新增id
public function getlastInsertId(){
        $id=$this->db->insert_id;
        return $id;
    }
    //獲取影響行數
public function getRow(){
       $num=$this->db->affected_rows;
       return $num;
    }
    //執行條件語句,儲存結果集
public function get(){
       $sql=$this->condition;
       //echo $sql;die;
$res=$this->db->query($sql);
       $this->obj=$res;
       return $this;
    }
    //新增資料
public function insert($arr){
      foreach ($arr as $k => $val) {
            $str.=','."'$val'";
      }
       $sql="insert into $this->table values(null$str)";
       $mysqli=$this->db;
       $mysqli->query($sql);
       $this->db=$mysqli;
       $id=$this->getlastInsertId();
       if ($id) {
         return $id;
       }else{
            return false;
       }
    }
    /*
    *刪除資料
    */
public function delete($del,$con='AND'){
        if (is_array($del)) {
            foreach ($del as $k => $val) {
                $str.=" $con".' '.$k."="."'$val'";
             }
               $str=substr($str,4);
          }else{
             $str=$del;
          } 
        $sql="delete from $this->table where $str";
        $mysqli=$this->db;
        $mysqli->query($sql);
        $this->db=$mysqli;
        $num=$this->getRow();
        if ($num) {
           return $num;
        }else{
              return false;
        }
    }
    //修改資料
public function update($arr,$where='',$con='AND'){
        if (is_array($arr)) {
          foreach ($arr as $k => $val) {
               $update.=",".$k."="."'$val'";
           }
              $update=substr($update,1);
        }else{
            $update=$arr;
        }
       $str=$this->params($where,$con);
         $sql="update $this->table set $update where $str";
         $mysqli=$this->db;
       $mysqli->query($sql);
       $this->db=$mysqli;
       $num=$this->getRow();
       if ($num !== 'false') {
           return $num;
       }else{
              return false;
       }
    }
    //查詢欄位
public function select($where='*'){
         $sql="select $where from $this->table";
        $this->condition=$sql;
        return $this;
     }
     //查詢條件,拼接查詢語句
    /*
    *array('name'=>"zhanmg");    ==  name =zhang
    *['in','id',1,10]            ==  id in (1,10)
    *['like','name','zhang']     ==  name like '%zhang%'
    *['between','id',1,10]       ==  id between 1 and 10
    *['>','id',1]                ==  id>1
    *['<','id',10]               ==  id<10
    */
public function params($where,$con){
      if (!is_array($where)) {
        $str=$where;
      }else{
        $arr=array();
        foreach ($where as $key => $value) {
            if (is_int($key)) {
                 $arr[$key]=$value;
              }else{
                 $str.=" $con".' '.$key."="."'$value'";
              }   
        } 
        if (!empty($arr)) {
            $type=$arr[0];
            switch ($type) {
              case 'in':
                for ($i=2; $i <count($arr) ; $i++) { 
                  $ids.=','.$arr[$i];
                }
                $ids=substr($ids,1);
                $str= $arr[1].' '."in ($ids)";
                break;
              case 'like':
$str= $arr[1].' '."like '%".$arr[2]."%'";
                break;
              case '>':
$str= $arr[1].' '."> ".$arr[2];
                break;
              case '<':
$str= $arr[1].' '."< ".$arr[2];
                break;
              case 'between':
$str= $arr[1].' '."between ".$arr[2].' and '.$arr[3];
                break;
             }
        }else{
            if ($con=='AND') {
              $str=substr($str,4);
            }else{
              $str=substr($str,3);
            }
        }
      }
      return $str;
    }
    //構建條件語句
public function where($where,$con='AND'){
      $str=$this->params($where,$con);
      $sql=$this->condition;
      $sql.=" where $str";
      $this->condition=$sql;
      //echo $sql;die;
return $this;
    }
    //新增and查詢條件
public function andwhere($where){
      $str=$this->params($where,$con);
      $sql=$this->condition;
      $sql.=" AND $str";
      $this->condition=$sql;
      //echo $sql;die;
return $this;
    }
    //新增or查詢條件
public function orwhere($where){
      $str=$this->params($where,$con);
      $sql=$this->condition;
      $sql.=" OR $str";
      $this->condition=$sql;
      return $this;
    }
   //查詢條數限制
public function limit($offset,$start=0){
      $sql=$this->condition;
      $sql.=" limit $start,$offset";
      $this->condition=$sql;
      return $this;
   }
    //分組查詢
public function groupBy($params){
      $sql=$this->condition;
      $sql.=" GROUP BY $params";
      $this->condition=$sql;
      return $this;
    }
    //篩選
public function having($params,$con='AND'){
      $str=$this->params($params,$con);
      $sql=$this->condition;
      $sql.=" having ($str)";
      $this->condition=$sql;
      return $this;
    }
    //增加篩選條件
public function addhaving($params,$con='AND'){
      $str=$this->params($params,$con);
      $sql=$this->condition;
      $sql.=" AND ($str)";
      $this->condition=$sql;
      return $this;
    }
    //排序
public function orderBy($params){
      $sql=$this->condition;
      $sql.=" ORDER BY $params";
      $this->condition=$sql;
      return $this;
    }
   
     

}


test.php  呼叫
<?php  
   include 'config.php';
   include 'DB.class.php';
   
$mysql=DBFactory::create($dsn);
$mysql->table='admin';
$db=$mysql->connect($dsn);
//$a=$mysql->db;
   /*query()*/
//$sql="select * from admin";
//$res=$mysql->connect($dsn)->sqlquery($sql);
   /*insert*/
// $arr=array(
//     'username'=>'zhangsan',
//     'pwd'=>'123456',
//     );
// $res=$db->insert($arr);
   /**delete*/
 // $delwhere=array(
 //   'id'=>14,
 // );
 // $delwhere="id in(12,13,15)";
 // $res=$db->delete($delwhere); 
    /**update*/
$arr=array(
   'username'=>'zhangsan',
   'pwd'=>'123456',
   );
   $where=array(
   'id'=>11,
  ); 
 
 //   $arr=['in','id',1,3,4,10] ; 
 //   $arr1=['like','username','ang'];   
 //   //$arr=['between','id',1,10];      
 //   //$arr=['>','id',1];                
 //   //$arr=['<','id',10]   
$res=$db->update($arr,$where);
 //   $res=$db->select()->where($arr)->having($arr1)->orderBy("id desc")->limit(5)->get()->All();
var_dump($res);

相關推薦

運用工廠模式封裝刪改select查詢條件

config.php檔案    資料庫引數 <?php $dsn=array( 'localhost'=> '127.0.0.1', 'username' => 'root', 'password' => 'root',

關於MVC工廠模式刪改sql存儲過程

var http 添加 rec 接受 ring 變量 index ext 這裏MVC中用到了反射,工廠,泛型,接口 在搭建框架的時候,除了MVC的三層以外,還有泛型的接口層和工廠層 下面是dal層調用sql存儲過程,增刪改查,dal層繼承了接口層,實現了接口層裏面的方法

單表操作刪改F查詢Q查詢favicon的圖標操作

正則匹配 基於 rect 字符串類 port imp 相同 contain in use 增刪改查 增 User.objects.create(name=,id=) user=User(name=,id=) user.save() 刪除 User.objects.

封裝版學生管理系統連線資料庫刪改拿去用不謝。

# coding = utf-8 import sqlite3 class Student(object): def __init__(self, id, name, age, sex, phone): self.id = id self.name

Python3.6 連線mysql 資料庫刪改及多執行緒簡單運用

readme:        匯入 pymysql 連線資料庫,完成資料處理後的增刪改查操作。匯入到其他Python檔案就可以直接呼叫。後面一個檔案是多執行緒操作, 另一個檔案是處理曲線擬合和積分的然後資料和資料庫互動的運用。 aliyunMySQL_test.py im

面向對象---封裝刪改+數據分頁

循環 author ceil 首頁 false conn arr var_dump ref <meta charset="UTF-8"> <?php class F{ public $locahost; public $name;

第五天 字典的介紹dict刪改嵌套 及for循環

.get set 增加 判斷 eight 保存 back 存在 組成 字典(dict)是python中唯一的一個映射類型.他是以{ }括起來的鍵值對組成. 在dict中key是唯一的. dict 用大括號 {} 括起來,內部使用key:value 的形式保存數據

列表(索引與切片刪改) 計數排序元祖和元祖的嵌套

元素 col 切片 ack list 升序 不能 height pen 1.列表 1.列表相比於字符串. 不限制數據類型. 而且可以存放大量的數據   2.表示方式: [] 方括號中的每一項都要逗號隔開   3.列表和字符串一樣,也有索引與切片 常用功

asp.net core webapi 使用ef 對mysql進行刪改並生成Docker鏡像構建容器運行

rri put void userdata pro ext 代理 cte 成功 1.構建運行mysql容器,添加數據庫user 參考Docker創建運行多個mysql容器,地址 http://www.cnblogs.com/heyangyi/p/9288402.html

Python的列表類型操作——“刪改元組——“

增刪 mov 增刪改 常用 元組 for range 對象 嵌套 一、什麽是列表   1.列表是一個可變的數據類型,它由[]表示,其中的每一項元素使用“,”逗號隔開,可以儲存各種數據類型。列表相比於字符串,可以存放大量數據類型,其是有序的,有索引,可以使用切片,方便取值。

ASP.NET C# 連接 Oracle數據庫刪改事務

config 註釋 數據庫 using tran datatable 文件 影響 常用 一、知識介紹   ①ASP.NET 使用的是MVC模式,開發工具Visual studio ,語言C#   ②Oracle是比較重型的數據庫,這裏主要介紹連接數據庫,對數據進行具體的使用

mysql資料庫的簡單刪改合併欄位拼接字元操作用java完成將一張表中的查詢結果合併存入另一張表的指定欄位

首先問題描述:我現在有兩個表,一個表是關鍵詞,一個表是含有關鍵詞的標籤,需要做的就是在關鍵詞表中新建一個標籤欄位,把包含該關鍵詞的全部標籤存入其中。比如關鍵詞是Java,標籤可能有Java開發,Java後臺等。我這裡關鍵詞有4000個,標籤有40000個,我用了小段java程式碼+sql的函式就完成

潭州課堂25班:Ph201805201 django框架 第六課 模型類刪改常用 的查詢查詢條件 (課堂筆記)

在檢視函式中寫入增刪改查的方法 增:     在 urls 中配置路徑 :    查: 1: 在後臺列印資料  在模型類中新增格式化輸出 : QuerySet,反回的是個物件,可以按索引聚會,用 for

MySQL—刪改分組連表limitunionalter排序去重

MySQL增刪改查   在表格的增刪改查中,查的內容是最多的,包括group by ,join,limit,union,alter,排序都是服務於查的 #sql語句資料行操作補充 #增加: #insert into table_name(欄位1,欄位2)

SpringBoot 整合 Thymeleaf 實現刪改實現前後端分離做法

通過一個簡單的與Springboot整合Demo認識Thymeleaf模板 文章目錄 通過一個簡單的與Springboot整合Demo認識Thymeleaf模板 什麼是Thymeleaf Thymeleaf 的基礎使用 前後端分離

jdbc篇第7課:封裝刪改

  這節課我們來封裝增刪改查   實現: package com.tool; import com.bean.Employee; import java.sql.*; import java.util.*; public class Employe

fetch封裝(刪改)

html: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="wi

Python sqlalchemy刪改多表查詢join操作

sqlalchemy物件: from sqlalchemy import Column from sqlalchemy import DateTime from sqlalchemy import BIGINT from sqlalchemy import IN

20181022mysql操作一:建立庫表的刪改資料的刪改

1、建立資料庫 create database python charset=utf8; 2、使用資料庫 use python; 3、建立表結構 create table student(     id int primary key auto_increment

【本人禿頂程式設計師】只會刪改當你有一定的開發經驗時應該如何提升自己?

←←←←←←←←←←←← 我都禿頂了,還不點關注! 工作1-5年開發經驗,當你們提出漲工資的時候,或者要offer的時候底氣怎麼樣,是不是底氣十足,不給漲工資就辭職,是不是有自信提出來主管、或者是專案經理都能同意,他們相當設法把你留住。如果這樣你才是成功。什麼技術都沒有何談工資! 給你分