<?php
include ('ft.php'); $db=Danli::show();
//查询
//$re=$db->table('stree')->where(['name'=>'四六级分数']);
//
//$data=$db->get(); //添加 //$arr=$db->table('stree')->insert(['name'=>'四六级分数','email'=>'124fsdag']); //var_dump($arr);
//删除;
//$del=$db->del(['id'=>[2,3]]); //修改 $db->table('stree')->where(['id'=>2]);
$res=$db->update(['name'=>'第一次改','email'=>'改第三方']);
var_dump($res); //封装语句 <?php
class Danli{
//将复制后的数据存进属性中,方便其他方法调用
private $table=null;
private $where=null;
private $pdo; private static $internet; private function __construct()
{
//链接数据库,私有的是为了防止外部直接实例化
$this->pdo=new PDO("mysql:host=127.0.0.1;dbname=1611b","root","root");
}
private function __clone()
{
//定义成私有的,防止外部clone内部方法
// TODO: Implement __clone() method.
}
public static function show(){
//判断类是否被实例化,如果没有则实例化,并存进self::$internet中,self::$internet是调用静态属性
if(!(self::$internet instanceof Danli)){
self::$internet=new Danli();
}
return self::$internet;
}
function table($table){
//定义表名,利用实例化的类->table可调用
$this->table=$table.' ';
return $this;
}
function where($where){
//where后跟的条件,判断输是数组还是字符串
if(is_array($where)){
$str='where ';
foreach ($where as $k=>$v){ $str.=$k.'='."'$v'".' and '; }
$str=rtrim($str,' and '); }else{
$str=$where;
} return $this->where=$str; } function get(){
//查询的封装
return $this->pdo->query("select*from $this->table $this->where")->fetchAll(PDO::FETCH_ASSOC); }
function insert($arr){
//添加
$key=array_keys($arr);
$keys=implode(',',$key);
$str='';
foreach ($arr as $k=>$v){
$str.=','."'".$v."'";
}
$str=substr($str,1);
return $this->pdo->exec("insert into $this->table ($keys)values($str)");
}
function del($id){
//删除
$str='';
$str1='';
foreach ($id as $k=>$v){
$str.=$k;
foreach ($v as $kk=>$vv){
$str1.=','.$vv;
}
} $str2=substr($str1,1); $ids='where '.$str.' in '.'('.$str2.')';
return $this->pdo->exec("delete from $this->table $ids");
} function update($res){
//修改
$str='';
foreach ($res as $k=>$v){
$str.=','.$k.'='."'".$v."'";
}
$str=substr($str,1);
return $this->pdo->exec("update $this->table set $str $this->where");
} }

封装CURD的更多相关文章

  1. springboot整合mybatis及封装curd操作-配置文件

    1 配置文件  application.properties  #server server.port=8090 server.address=127.0.0.1 server.session.tim ...

  2. .NET Core实战项目之CMS 第十二章 开发篇-Dapper封装CURD及仓储代码生成器实现

    本篇我将带着大家一起来对Dapper进行下封装并实现基本的增删改查.分页操作的同步异步方法的实现(已实现MSSQL,MySql,PgSQL).同时我们再实现一下仓储层的代码生成器,这样的话,我们只需要 ...

  3. 轻量jquery框架之--组件交互基础设计

    概要 组件交互基础,即考虑在JQUERY对象下($)下扩展所有组件都需要用到的通用api,如ajax入口.对表单的操作.html片段加载.通用的配合datagrid通用的curd客户端对象等. 扩展a ...

  4. .NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划

    作者:依乐祝 原文地址:https://www.cnblogs.com/yilezhu/p/9977862.html 写在前面 千呼万唤始出来,首先,请允许我长吸一口气!真没想到一份来自28岁老程序员 ...

  5. net core体系-web应用程序-4asp.net core2.0 项目实战(CMS)-第一章 入门篇-开篇及总体规划

    .NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划   原文地址:https://www.cnblogs.com/yilezhu/p/9977862.html 写在前面 千呼万唤始出来 ...

  6. MongoDB学习笔记~自己封装的Curd操作(按需更新的先决条件)

    回到目录 我们上一讲中介绍了大叔封装的Mongo仓储,其中介绍了几个不错的curd操作,而对于按需更新内部子对象,它是有条件的,即你的子对象不能为null,也就是说,我们在建立主对象时,应该为子对象赋 ...

  7. 通过jdbc完成单表的curd操作以及对JDBCUtils的封装

    概述:jdbc是oracle公司制定的一套规范(一套接口),驱动是jdbc的实现类,由数据库厂商提供.所以我们可以通过一套规范实现对不同的数据库操作(多态) jdbc的作用:连接数据库,发送sql语句 ...

  8. Jdbc封装和对CURD的封装

    1.查询emp表中的所有记录为例 2.测试类 public Emp getByNameAndEmail(String name, String email){ String sql = "s ...

  9. MongoDB学习笔记~自己封装的Curd操作(查询集合对象属性,更新集合对象)

    回到目录 我不得不说,mongodb官方驱动在与.net结合上做的不是很好,不是很理想,所以,我决定对它进行了二次封装,这是显得很必然了,每个人都希望使用简单的对象,而对使用复杂,麻烦,容易出错的对象 ...

随机推荐

  1. AcWing:146. 序列(小根堆 + 数学归纳 + 贪心)

    给定m个序列,每个包含n个非负整数. 现在我们可以从每个序列中选择一个数字以形成具有m个整数的序列. 很明显,我们一共可以得到nmnm个这种序列, 然后我们可以计算每个序列中的数字之和,并得到nmnm ...

  2. Apache 服务器 首次访问特别慢的解决过程,php环境

    一台服务器之前装的是java的tomcat apache 项目, 后面装了个phpstudy 在上面,访问php项目发现 浏览器首次打开网页需要7-8秒,打开成功后连续访问都很快,过一段时间访问又是7 ...

  3. spark on yarn 动态资源分配报错的解决:org.apache.hadoop.yarn.exceptions.InvalidAuxServiceException: The auxService:spark_shuffle does not exist

    组件:cdh5.14.0 spark是自己编译的spark2.1.0-cdh5.14.0 第一步:确认spark-defaults.conf中添加了如下配置: spark.shuffle.servic ...

  4. Flume使用

    avro agent 配置文件 cd $FLUME_HOME/conf vim avro.conf a1.sources = r1 a1.sinks = k1 a1.channels = c1 a1. ...

  5. 识别C++编译器编译标准

    cout << __cplusplus<<endl; C++03:__cplusplus = 199711L C++11:__cplusplus = 201103L

  6. 警告(alert)、确认(confirm)

    我们在访问网站的时候,有时会突然弹出一个小窗口,上面写着一段提示信息文字.如果你不点击“确定”,就不能对网页做任何操作,这个小窗口就是使用alert实现的. 语法: alert(字符串或变量);注:a ...

  7. 最简SpringBoot程序制法

    JDK:1.8.0_212 IDE:STS4(Spring Tool Suit4 Version: 4.3.2.RELEASE) 工程下载:https://files.cnblogs.com/file ...

  8. leetcode334 递增的三元子序列

    class Solution { public: bool increasingTriplet(vector<int>& nums) { //使用双指针: int len=nums ...

  9. ORACLE PSU SPU (2015-11-04)

    Quick Reference to Patch Numbers for Database PSU, SPU(CPU), Bundle Patches and Patchsets (文档 ID 145 ...

  10. JSTL标签(核心标准库)

    使用JSTL标签步骤 1) 导入jstl支持的jar包(标签背后隐藏的java代码) 注意:使用javaee5.0的项目自动导入jstl支持jar包 2)使用taglib指令导入标签库 <%@t ...