<?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. 排序学习(learning to rank)中的ranknet pytorch简单实现

    一.理论部分 理论部分网上有许多,自己也简单的整理了一份,这几天会贴在这里,先把代码贴出,后续会优化一些写法,这里将训练数据写成dataset,dataloader样式. 排序学习所需的训练样本格式如 ...

  2. C++入门经典-例7.2-利用构造函数初始化成员变量

    1:在创建对象时,程序自动调用构造函数.同一个类中可以有多个构造函数,通过这样的形式创建一个CPerson对象,例如: CPerson p1(0,"jack",22,7000); ...

  3. PHP反序列化总结

    之前遇到过很多次php反序列化相关的内容,总结一下. (反)序列化给我们传递对象提供了一种简单的方法.serialize()将一个对象转换成一个字符串,unserialize()将字符串还原为一个对象 ...

  4. SRS之播放推流视频

    1. 综述 首先,推流直播的配置文件如下: # rtmp.conf listen 1935; max_connections 1000; daemon off; srs_log_tank consol ...

  5. Java-GC 垃圾收集器(HotSpot)

    垃圾收集器为垃圾收集算法的具体实现,是执行垃圾收集算法的,是守护线程. HotSpot 虚拟机采用分代收集(JVM 规范并未对堆区进行划分),将堆分为年轻代和老年代,垃圾收集器也按照这样区分.不过已有 ...

  6. When 表达式 kotlin(9)

    When 表达式 when 取代了类 C 语言的 switch 操作符.其最简单的形式如下:控制流when (x) { 1 -> print("x == 1") 2 -> ...

  7. Movidius的深度学习入门

    1.Ubuntu虚拟机上安装NC SDK cd /home/shine/Downloads/ mkdir NC_SDK git clone https://github.com/movidius/nc ...

  8. 【React自制全家桶】七、React实现ajax请求以及本地数据mock

    一.下载axios插件 yarn add axios 二.React的ajax请求代码如何放置 建议放置在生命周期函数之componentDidMount()中 三.ajax之get请求 axios. ...

  9. 【React自制全家桶】四、React中state与props的分析与比较

    一.state 1.state的作用 state是React中组件的一个对象.React把用户界面当做是状态机,想象它有不同的状态然后渲染这些状态,可以轻松让用户界面与数据保持一致. React中,更 ...

  10. JAVA处理链表经典问题

    定义链表节点Node class Node { private int Data;// 数据域 private Node Next;// 指针域 public Node(int Data) { // ...