運用工廠模式封裝增刪改查,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'; /** * */DB.interface.php 介面檔案class DBFactory{ public static function create($dsn){ $name=$dsn['type']."DB"; return new $name($dsn); } }
<?php interface DB{ //增加 arr為傳入的陣列 public function insert($arr); //查詢欄位 public function select($where); //條件查詢 public function where($whereMysqlDB.class.php 封裝的方法,$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(); }
<?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—增刪改查,分組,連表,limit,union,alter,排序,去重
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的時候底氣怎麼樣,是不是底氣十足,不給漲工資就辭職,是不是有自信提出來主管、或者是專案經理都能同意,他們相當設法把你留住。如果這樣你才是成功。什麼技術都沒有何談工資! 給你分