<?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. $\LaTeX$数学公式大全2

    $2\ Math\ Constructs$$\frac{abc}{xyz}$ \frac{abc}{xyz}$f'$ f'$\sqrt{abc}$ \sqrt{abc}$\sqrt[n]{abc}$ ...

  2. JVM----Java内存模型与线程

    我们知道,计算机CPU和内存的交互是最频繁的,内存是我们的高速缓存区,用户磁盘和CPU的交互,而CPU运转速度越来越快,磁盘远远跟不上CPU的读写速度,才设计了内存,用户缓冲用户IO等待导致CPU的等 ...

  3. C++之多继承与虚继承

    1. 多继承 1.1 多继承概念 一个类有多个直接基类的继承关系称为多继承 多继承声明语法 class 派生类名 : 访问控制 基类名1, 访问控制 基类名2, ... { 数据成员和成员函数声明 } ...

  4. 石川es6课程---4、箭头函数

    石川es6课程---4.箭头函数 一.总结 一句话总结: 相当于函数的简写,类似python lambda 函数,先了解即可 let show1 = function () { console.log ...

  5. JDBC——JDBC基础

    1.JDBC与数据库的交互过程概括性来说,JDBC与数据库交互有以下这些步骤:1.建立一个到数据库的连接.2.在数据库中对表执行检索.创建,或修改的SQL查询.3.关闭到数据库的连接.JDBC的类和接 ...

  6. websphere部署不能发布war文件,提示“配置库中已存在应用程序

    碰上这种问题, 要是全删除与war相关配置文件,要么按网上教程,一点点搜下面的文件中包含的相关文件: $WAS_HOME/profiles/AppSrv01/config/cells/...cell/ ...

  7. router 配置按需加载对应的组件,配置active

    const routes = [ { path: '/', component: App, children: [ {path: '/index/:type', name: 'index', comp ...

  8. 【React自制全家桶】八、React动画以及react-transition-group动画库的使用

    React动画通常有三种方法实现从易到难为: 1.transition(CSS3自带) 2.animation(CSS3自带) 3.react-transition-group动画库(需要引入插件) ...

  9. javascript之Screen(屏幕)对象

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  10. Nova 实现的 Fit Instance NUMA to Host NUMA 算法

    目录 文章目录 目录 前文列表 numa_fit_instance_to_host _numa_fit_instance_cell _numa_fit_instance_cell_with_pinni ...