增删改查类

<?php
// 所有数据表的基类
abstract class Model {protected $tableName = "";protected $pdo = "";protected $sql="";function __construct() {$pdo = new PDO( "mysql:host=" . DB_HOST . ";dbname=" . DB_NAME, DB_USERNAME, DB_PASSWORD );$pdo->exec ( "set names " . DB_CHARSET );$this->pdo = $pdo;}function updatetone($where=''){$sql = 'UPDATE ' . $this->tableName . ' SET clicknum=clicknum+1'. ($where == NULL ? $where : ' WHERE ' . $where);$this->sql=$sql;return $this->pdo->exec ( $sql );}/*** 获取总记录数 select count(*) as num from news where cateid=5*/function count($where=""){$where = empty($where) ? "" : " where ".$where;$sql="select count(*) as num from {$this->tableName} $where";$this->sql=$sql;$pdoS=$this->pdo->query($sql);$arr=$pdoS->fetch(PDO::FETCH_ASSOC);return $arr['num'];}/*** 增加* array $arr=array('字段名'=>值,....) exp:array('username'=>'xiaowang','password'=>'123456')*/function insert($arr) {// 把数组转化成sql语句// sql语句是php向mysql,告诉她给我写一条记录进表// insert into 表名(字段列表) value(数据列表)// insert into adminuser(username,password) value('xiaowang','123456')$fiedList = "";$valueList = "";foreach ( $arr as $k => $v ) {$fiedList .= "," . $k;$valueList .= ",'" . $v . "'";}$fiedList = substr ( $fiedList, 1 );$valueList = substr ( $valueList, 1 );// 拼sql$sql = "insert into {$this->tableName}({$fiedList}) value({$valueList})";$this->sql=$sql;// 执行$re = $this->pdo->exec ( $sql );if ($re) {// 返回主键idreturn $this->pdo->lastInsertId ();} else {return false;}}// 查询function findByPk($id) {// 获取表的主键名称 desc 表名$pdoS = $this->pdo->query ( "desc " . $this->tableName );$arr = $pdoS->fetchAll ( PDO::FETCH_ASSOC );foreach ( $arr as $v ) {if ($v ['Key'] == 'PRI') {$fieldName = $v ['Field'];break;}}$sql = "select * from {$this->tableName} where $fieldName=$id";$this->sql=$sql;$pdoS = $this->pdo->query ( $sql );return $pdoS->fetch ( PDO::FETCH_ASSOC );}/*** 查询多条记录* array $arr 用来管理查询语句的子句* array('limit'=>'0,5','where'=>"id=5")*/function findAll($arr = array()) {// select 字段列表 from 表名// where 条件 group by 字段 having 条件 order by 字段 desc|asc limit start,length// select 字段列表 from 表1 as t1 join 表2 as t2 on t1.字段=t2.字段 join 表3 as t3 on t2.字段=t3.字段// 拼sql语句$field = isset ( $arr ['field'] ) ? $arr ['field'] : "*";$where = isset ( $arr ['where'] ) ? " where " . $arr ['where'] : '';$group = isset ( $arr ['group'] ) ? " group by " . $arr ['group'] : '';$having = isset ( $arr ['having'] ) ? " having " . $arr ['having'] : "";$order = isset ( $arr ['order'] ) ? " order by " . $arr ['order'] : '';$limit = isset ( $arr ['limit'] ) ? " limit " . $arr ['limit'] : '';$alias = isset ( $arr ['alias'] ) ? " as " . $arr ['alias'] : "";$join = isset ( $arr ['join'] ) ? " join " . $arr ['join'] : '';$sql = "select $field from {$this->tableName} $alias $join $where $group $having $order $limit";$this->sql=$sql;$pdoS = $this->pdo->query ( $sql );if (is_object ( $pdoS )) {return $pdoS->fetchAll ( PDO::FETCH_ASSOC );} else {return array ();}}function delete($where = NULL) {$sql = 'DELETE FROM ' . $this->tableName . ($where == NULL ? $where : ' WHERE ' . $where);$this->sql=$sql;return $this->pdo->exec ( $sql );}function update($bind, $where = NULL) {$set = NULL;foreach ( $bind as $field => $value ) {if (is_null ( $set )) {$set .= $field . "='" . $value . "'";} else {$set .= ',' . $field . "='" . $value . "'";}}$sql = 'UPDATE ' . $this->tableName . ' SET ' . $set . ($where == NULL ? $where : ' WHERE ' . $where);$this->sql=$sql;return $this->pdo->exec ( $sql );}function query($sql){//判断是更新语句,还是查询语句if(preg_match("/^select/i",$sql)){$pdoS=$this->pdo->query($sql);return $pdoS->fetchAll(PDO::FETCH_ASSOC);}else{return $this->pdo->exec($sql);}}function getLastSql(){return $this->sql;}
}

  

转载于:https://www.cnblogs.com/zst062102/p/6089473.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/394584.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

html网页和cgi程序编程,CGI 编程方式学习

1.大家都知道CGI是通用网关接口&#xff0c;可以用来编写动态网页。而且CGI可以用很多种语言来写&#xff0c;用perl来编写最常见&#xff0c;我这里就是用perl来编写做例子。讲到编写CGI编程方式&#xff0c;编写CGI有两程编程风格。(1)功能型编程(function-oriented style)这…

20175305张天钰 《java程序设计》第四周课下测试总结

第四周课下测试总结 错题 某方法在父类的访问权限是public&#xff0c;则子类重写时级别可以是protected。 A .true B .false 正确答案&#xff1a;B 解析&#xff1a;书P122&#xff1a;子类不允许降低方法的访问权限&#xff0c;但可以提高访问权限。 复杂题&#xff08;易错…

强化学习q学习求最值_通过Q学习更深入地学习强化学习

强化学习q学习求最值by Thomas Simonini通过托马斯西蒙尼(Thomas Simonini) 通过Q学习更深入地学习强化学习 (Diving deeper into Reinforcement Learning with Q-Learning) This article is part of Deep Reinforcement Learning Course with Tensorflow ?️. Check the syl…

BZOJ 1113: [Poi2008]海报PLA

1113: [Poi2008]海报PLA Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1025 Solved: 679[Submit][Status][Discuss]Description N个矩形,排成一排. 现在希望用尽量少的矩形海报Cover住它们. Input 第一行给出数字N,代表有N个矩形.N在[1,250000] 下面N行,每行给出矩形的长…

Python自动化运维之常用模块—OS

os模块的作用&#xff1a;  os&#xff0c;语义为操作系统&#xff0c;所以肯定就是操作系统相关的功能了&#xff0c;可以处理文件和目录这些我们日常手动需要做的操作&#xff0c;就比如说&#xff1a;显示当前目录下所有文件/删除某个文件/获取文件大小……  另外&#…

opengl三维图形图形颜色_【图形学基础】基本概念

右手坐标系。类似OpenGL遵循的右手坐标系&#xff1a;首先它是三维的笛卡尔坐标系&#xff1a;原点在屏幕正中&#xff0c;x轴从屏幕左向右&#xff0c;最左是-1&#xff0c;最右是1&#xff1b;y轴从屏幕下向上&#xff0c;最下是-1&#xff0c;最上是1&#xff1b;z轴从屏幕里…

xp职称计算机考试题库,2015年职称计算机考试XP题库.doc

2015年职称计算机考试XP题库.doc (7页)本资源提供全文预览&#xff0c;点击全文预览即可全文预览,如果喜欢文档就下载吧&#xff0c;查找使用更方便哦&#xff01;9.90 积分&#xfeff;2015年职称计算机考试XP题库职称计算机考试考点精编&#xff1a;工具栏的设置与操作XP中将…

Java基础学习-Path环境变量的配置

1.为什么要进行Path环境变量的配置程序的编译和执行需要使用到javac和java命令&#xff0c;所以只能在bin目录下写程序&#xff0c;而实际开发中&#xff0c;我们不可能将程序全部写到bin目录下&#xff0c;所以我们不许让javac和java命令在任意目录下都能够被访问。这时候&…

rails 共享变量_如何将Rails实例变量传递给Vue组件

rails 共享变量by Gareth Fuller由Gareth Fuller 如何将Rails实例变量传递给Vue组件 (How to pass Rails instance variables into Vue components) I’m currently working with a legacy Rails application. We are slowly transitioning the front-end from Rails views to…

Leetcode: Counting Bits

Given a non negative integer number num. For every numbers i in the range 0 ≤ i ≤ num calculate the number of 1s in their binary representation and return them as an array.Example: For num 5 you should return [0,1,1,2,1,2].Follow up:It is very easy to c…

第一个python爬虫_Python爬虫01——第一个小爬虫

Python小爬虫——贴吧图片的爬取 在对Python有了一定的基础学习后&#xff0c;进行贴吧图片抓取小程序的编写。 目标&#xff1a; 首先肯定要实现图片抓取这个基本功能 然后实现对用户所给的链接进行抓取 最后要有一定的交互&#xff0c;程序不能太傻吧 一、页面获取 要让pytho…

Mac下,如何把项目托管到Github上(Github Desktop的使用)

在上一篇中&#xff0c;详细讲解了使用X-code和终端配合上传代码的方法&#xff0c;这种方法比较传统&#xff0c;中间会有坑&#xff0c;英文看起来也费劲&#xff0c;不过Github官方提供了一个Mac版的客户端&#xff0c;如下图&#xff1a; 附上下载链接&#xff1a;传送门 下…

计算机网络英文面试题,计算机网络面试题整理

GET和POST的区别&#xff1f;GET和POST方法没有实质上区别&#xff0c;只是报文格式不同。GET和POST是HTTP协议中的两种请求方法。而 HTTP 协议是基于 TCP/IP 的应用层协议&#xff0c;无论 GET 还是 POST&#xff0c;用的都是同一个传输层协议&#xff0c;所以在传输上&#x…

利用递归求某数的阶乘——C/C++

#include<stdio.h>int getFactorial(int n) {if(n0)return 1;else return n*getFactorial(n-1); }int main() {int n,res;scanf("%d",&n);res getFactorial(n);printf("%d",res);return 0; } 转载于:https://www.cnblogs.com/daemon94011/p/106…

intern_充分利用Outreachy Intern申请流程

internby Joannah Nanjekye乔安娜南耶基(Joannah Nanjekye) 充分利用Outreachy Intern申请流程 (Get the most out of your Outreachy Intern application process) Outreachy gives three-month paid internships for persons that are underrepresented in tech. Interns ar…

Put-Me-Down项目Postmortem2

一.设想和目标二.计划三.资源四.变更管理五.设计/实现六.测试/发布总结一.设想和目标 1. 我们的软件要解决什么问题&#xff1f;是否定义得很清楚&#xff1f;是否对典型用户和典型场景有清晰的描述&#xff1f; 我们的软件要帮助低头族控制使用手机时间。功能很明确&#xff0…

大数据实验报告总结体会_建设大数据中台架构思考与总结

简介本文介绍完善的大数据中台架构了解这些架构里每个部分的位置&#xff0c;功能和含义及背后原理及应用场景。帮助技术与产品经理对大数据技术体系有个全面的了解。数据中台定义&#xff1a;集成离线数仓与实时数仓&#xff0c;并以多数据源统一整合采集到kafka,再通过kafka进…

半数集问题

给定一个自然数n&#xff0c;由n开始可以依次产生半数集set(n)中的数如下&#xff1a; (1) n ∈set(n)&#xff1b; (2) 在n的左边加上一个自然数&#xff0c;但该自然数不能超过最近添加的数的一半&#xff1b; (3) 按此规则进行处理&#xff0c;直到不能再添加自然数为止。…

微型计算机控制理论基础答案,微型计算机控制技术试卷c

微型计算机控制技术试卷a潘新民 微型计算机控制技术实用教程微型计算机控制技术试卷C一、选择题(本题共10小题&#xff0c;每小题 1.5分&#xff0c;共15分)1. DAC0832的VREF接-5V&#xff0c;IOUT1接运算放大器异名端&#xff0c;输入为1000000B &#xff0c;输出为( )。A. 5V…

aws lambda_四处奔走:初学者遇到AWS Lambda

aws lambdaby Janaka Bandara通过Janaka Bandara 四处奔走&#xff1a;初学者遇到AWS Lambda (Running around the block: a beginner meets AWS Lambda) Computing! It sure has a very long, vivid (and sometimes awkward) history. Some key milestones include:计算&…