PDO的封装
来源:互联网 发布:淘宝支付宝登陆界面 编辑:程序博客网 时间:2024/06/03 04:15
PHP PDO封装的增 删 改 查
<?php class Mysql{static private $db; //数据引擎对象private $pdo;//pdo 引擎对象private $table; //表名private $where = array("1=1");//条件private $data;//源数据//定义受保护的构造方法禁止外部使用private function __construct(){$this->pdo = new PDO("mysql:host=127.0.0.1;dbname=book",'root','');//$this->pdo->query("set names utf8");}//初始化mysql类、在类内部实例化mysql类static public function init(){//自身调用需使用self::调用自身、判断是否被实例化if(!self::$db){self::$db = new Mysql(); }//已被实例化直接返回、外部即可直接使用return self::$db;}//原生SQL语句 直接执行;public function query($sql) {//echo $sql.'<br>';$ch = $this->pdo->query($sql);return $ch;}//查询多条public function select($table='',$data=array(),$limit=array()){//表名if(!empty($table)) $this->table($table);//条件if(!empty($data)) $this->where($data);//拼接where条件$where = implode(' AND ',$this->where);$limit_str = '';//偏移量if($limit){$limit_str = ' LIMIT '.$limit[0].','.$limit[1]; }$sql = 'SELECT * FROM '.$this->table.' WHERE '.$where.$limit_str;//echo $sql;//绑定参数//dump($this->data);$item = $this->bind($sql,$this->data);//dump($item);$item->setFetchMode(PDO::FETCH_ASSOC);$data = $item->fetchAll();return $data;}//添加public function add($table,$data=array()) {//获取添加的表名$this->table = $table;//echo $this->table;die;$data = $this->redun($data); // dump($data);//循环数据 生成 $key , $val ;$val = '';$key = '';foreach ($data as $k => $v) {$key .= $k.',';$val .= ':'.$k.',';}$val = trim($val,',');$key = trim($key,',');$sql = "INSERT INTO ".$table. '('.$key.') VALUES ('.$val.')'; //echo $sql;die;//绑定参数$this->bind($sql,$data);//获取新插入的idreturn $this->pdo->lastInsertId();}public function del($table,$data=array()){//获取删除的表名$this->table = $table;$field=$this->field();$data = $this->redun($data);$sql = "delete from ".$table." where ". $field[0] ." in ( :".$field[0] .')';//绑定参数$ch = $this->bind($sql,$data);return $ch->rowCount();}public function save($table,$data=array()){//获取修改的表名$this->table = $table;//$data = $this->redun($data);$field=$this->field();//拼接where条件if(isset($data[$field[0]])){$where = ' where '.$field[0].' = :'.$field[0];}$sql = 'UPDATE '.$this->table . ' SET ';foreach ($data as $k => $v) {if ($k == $field[0]) continue;$sql .= $k ." = :".$k.",";}//echo $sql;$sql = trim($sql,',').$where;//绑定参数 $ch = $this->bind($sql,$data); return $ch->rowCount();}//where条件public function where($data = array()){if (is_array($data)) {//把数据存入 $this->data = $data;$this->where[] = " 1=1 ";foreach ($data as $key => $val){$this->where[] = $key.'=:'.$key;}}if (is_string($data) && !empty($data)) {$arr = explode(' ',$data);$val = trim($arr[2] , "'");$this->where[] = $arr[0].' '.$arr[1].' :'.$arr[0];$this->data[$arr[0]] = $val;}return $this;}//表名public function table($table = ''){$this->table = $table;return $this;}public function bind($sql, $data=array()) {$ch= $this->pdo->prepare($sql);if(!empty ($data)){foreach($data as $key=>$val){$ch->bindValue(':'.$key, $val);}}//执行返回状态//dump($sql);$ch->execute();//$ch->debugDumpParams();return $ch;}//查询表中字段public function field(){ //dump($this->pdo);$ch = $this->pdo->query('desc '.$this->table);//echo $this->table;$data = $ch->fetchAll(PDO::FETCH_ASSOC);$arr = array();foreach($data as $val){$arr[] = $val['Field'];}return $arr;}public function redun($data=array()) {//获取表字段$field=$this->field();//循环去除重复字段foreach($data as $key=>$val){if(!in_array($key, $field)) {unset ($data[$key]);}}return $data;}}
阅读全文
0 0
- 对PDO的封装
- PDO的封装
- PDO基础操作的封装
- PDO封装
- pdo 封装类
- php 封装PDO类
- php PDO封装
- pdo封装类
- php 封装PDO类
- phalcon pdo封装
- 5. PDO 数据库封装
- 封装PDO类
- php mysql PDO封装
- pdo 封装增删改查类
- 封装pdo类
- 封装的 PDO 操作数据库 的帮助类 MySqlHelper
- PDO基础操作类的封装第2版
- 一个简单的Memcache和PDO封装类
- 遍历与复制数组
- 虽然微不足道但是很有用的JAVA基础——集合简介
- Java简单枚举应用
- Pycharm导入第三方库技术分享
- codeforces 876A Trip For Meal
- PDO的封装
- Python多行代码注释快捷键
- CF876B 数学
- 设置属性框架(结合定时器)
- 二叉树的基本概念
- 运维之系统服务篇------ RAID磁盘阵列 、 进程管理 、 日志管理 、 systemctl控制
- 201710211100->AsyncDownloadTexture
- 给定一个排序的链表,删除所有具有重复数字的节点,从原始列表中只留下不同的数字。
- C++学习笔记——C语言中的fgets()函数