<?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. HDU 5793 A Boring Question ——(找规律,快速幂 + 求逆元)

    参考博客:http://www.cnblogs.com/Sunshine-tcf/p/5737627.html. 说实话,官方博客的推导公式看不懂...只能按照别人一样打表找规律了...但是打表以后其 ...

  2. python-pyhs2

    #!/usr/bin/env python # -*- coding: utf-8 -*- # hive util with hive server2 """ @auth ...

  3. Tree-based Model 如何处理categorical variable

    categorical variable 分为 order variale 和 non-order variable,其中order variable直接使用sklearn.preprocess.La ...

  4. 图片上传(前端显示预览,后端php接收)

    html: <form action="{:Url('do_ls_law_upload')}" method="POST" accept-charset= ...

  5. Java-AESUtil

    在线版 http://tool.chacuo.net/cryptaes 要使用 AES/CBC/PKCS7Padding 模式需要添加依赖 <!--AES/CBC/PKCS7Padding--& ...

  6. ccf 201612-3 权限查询

     ccf 201612-3 权限查询 解题思路: 建立一个二维矩阵存储权限和角色 还差30分emmm #include<iostream> #include<cstring> ...

  7. 自然语言20.1 WordNet介绍和使用

     https://study.163.com/provider/400000000398149/index.htm?share=2&shareId=400000000398149(欢迎关注博主 ...

  8. GLSL语法入门

    变量 GLSL的变量命名方式与C语言类似.变量的名称可以使用字母,数字以及下划线,但变量名不能以数字开头,还有变量名不能以gl_作为前缀,这个是GLSL保留的前缀,用于GLSL的内部变量.当然还有一些 ...

  9. [VBA]提取指定字符串后的数字--代码来源Excelhome

    问题:提取check之后的数字 来源:Excelhome Sub 提取数字() Dim regexp As New regexp With regexp .Pattern = "check\ ...

  10. 【汇总】数据库提权(mysql、mssql)

    日期:2018-04-03 11:46:45 作者:Bay0net 介绍:利用 mssql 的 sa 账号提权.利用 MySQL 的 UDF 提权 0x01.mssql 提权 恢复 xp_cmdshe ...