php的pdo数据层mysql类
来源:互联网 发布:炒股软件接口 编辑:程序博客网 时间:2024/04/30 09:31
闲着在家没事儿,写着玩。。。
<?phpheader("Content-type:text/html;charset=utf-8");/** * Created by PhpStorm. * User: Administrator * Date: 2016/8/9 * Time: 11:48 */abstract class DB{ protected abstract function connect(); public abstract function query($sql); public abstract function insert($arr); public abstract function getALL(); public abstract function delete($key,$id); public abstract function update($arr);}class pdoMysql extends DB{ private $host; private $username; private $password; private $dbname; private $table; public $pdh; private $where_sql = null; private $table_fields = null; private static $mysql = null; final protected function __construct($host,$username,$password,$dbname,$table){ $this->host = $host; $this->username = $username; $this->password = $password; $this->dbname = $dbname; $this->table = $table; $this->connect(); } final public static function getInstance($host,$username,$password,$dbname,$taable){ if(self::$mysql instanceof self) return self::$mysql; else{ self::$mysql = new self($host,$username,$password,$dbname,$taable); return self::$mysql; } } final protected function connect(){ $this->pdh = new PDO('mysql:host='. $this->host .';dbname=' .$this->dbname , $this->username, $this->password); if($this->pdh === null) die('connect error'); $stmt = $this->pdh->prepare('DESC '.$this->table); $stmt->execute(); $this->table_fields = $stmt->fetchAll(PDO::FETCH_COLUMN); if($this->table_fields === null) die('this table ' . $this->table . ' do not exists'); $this->query("set names utf8"); } public function query($sql){ $res = $this->pdh->query($sql); return $res; } protected function check_sql_arr($arr){ $key_arr = array_keys($arr); foreach($key_arr as $v){ if(!in_array($v,$this->table_fields)) die('sql fields error'); } return $arr; } public function insert($arr){ $arr = $this->check_sql_arr($arr); $sql = 'insert into ' . $this->table . ' (' . implode(',',array_keys($arr)) . ')'; $sql .= ' values (\''; $sql .= implode("','",array_values($arr)); $sql .= '\')'; $this->query($sql); } public function getALL(){ $res = $this->pdh->query("SELECT * FROM ". $this->table , PDO::FETCH_ASSOC); return $res->fetchAll(); } public function delete($key,$id){ $this->where($key, $id); $sql = 'delete from ' . $this->table . ' where ' . $this->where_sql; $this->query($sql); $this->where_sql = null; } public function update($arr){ $arr = $this->check_sql_arr($arr); if(!empty($this->where_sql)) { $sql = 'update ' . $this->table .' set '; foreach($arr as $k=>$v) { $sql .= $k . "='" . $v ."',"; } $sql = rtrim($sql,','); $sql .= ' where ' .$this->where_sql; $this->query($sql); } $this->where_sql = null; } public function where(){ $func_args_arr = func_get_args(); $key = array_intersect($func_args_arr,$this->table_fields); unset($func_args_arr[array_search($key,$func_args_arr)]); $key = array_pop($key); $sign = array_intersect($func_args_arr,array('>','<','=')); unset($func_args_arr[array_search($sign,$func_args_arr)]); $sign = array_pop($sign); $num = array_pop($func_args_arr); if($key && $num) { $this->where_sql .= $this->where_sql == null ? sprintf("(%s %s %d)",$key,$sign == null ? '=' : $sign,$num) : sprintf(" and (%s %s %d)",$key,$sign == null ? '=' : $sign,$num); }else{ die('arguments error in pdoMysql::where()'); } } public function whereor(){ $func_args_arr = func_get_args(); $key = array_intersect($func_args_arr,$this->table_fields); unset($func_args_arr[array_search($key,$func_args_arr)]); $key = array_pop($key); $sign = array_intersect($func_args_arr,array('>','<','=','like')); unset($func_args_arr[array_search($sign,$func_args_arr)]); $sign = array_pop($sign); $num = array_pop($func_args_arr); if($key && $num) { if(is_int($num)) $this->where_sql .= $this->where_sql == null ? sprintf("(%s %s %d)",$key,$sign == null ? '=' : $sign,$num) : sprintf(" or (%s %s %d)",$key,$sign == null ? '=' : $sign,$num); else $this->where_sql .= $this->where_sql == null ? sprintf("(%s %s '%s')",$key,$sign == null ? '=' : $sign,$num) : sprintf(" or (%s %s '%s')",$key,$sign == null ? '=' : $sign,$num); }else{ die('arguments error in pdoMysql::where()'); } } public function find(){ if(!empty($this->where_sql)) { $res = $this->pdh->query("SELECT * FROM ". $this->table . ' where ' . $this->where_sql, PDO::FETCH_ASSOC); print_r($res->fetchAll()); } $this->where_sql = null; }}$pdoMysql = pdoMysql::getInstance(YOURHOST,USERNAME,PASSWORD,DBNAME,TABLENAME);/*where查询$pdoMysql->where('goods_id','>',8);$pdoMysql->where('goods_id','<',10);$pdoMysql->whereor('goods_name','like','两%');$pdoMysql->find();*//*update修改$pdoMysql->where('goods_id','=',100);$pdoMysql->update(array( 'goods_id' => 10 ));*//*insert插入$pdoMysql->insert(array( 'goods_id' => 100, 'goods_name' => 'insert_goods_name' ));*//*delete删除$pdoMysql->delete('goods_id',100);*/
0 0
- php的pdo数据层mysql类
- 使用PHP的PDO类操作MySQL
- PHP PDO(mysql) 封装类
- PHP的PDO类
- PHP中数据库抽象层PDO获取数据表字段名的方法
- pdo数据抽象层
- [转]PHP 5 数据对象 (PDO) 抽象层与 Oracle
- PHP 5数据对象(PDO)抽象层与Oracle
- PHP 5 数据对象 (PDO) 抽象层与 Oracle
- [转]PHP 5 数据对象 (PDO) 抽象层与 Oracle
- [转]PHP 5 数据对象 (PDO) 抽象层与 Oracle
- pdo 帮助类 pdo class php 数据库 处理层 pdo dbhelper
- php的mysql函数仿pdo操作数据库类
- 同时支持三个MySQL+SQLite+PDO的PHP数据库类
- 一个好用的mysql pdo php操作类
- PHP中PDO的MYSQL事务处理实例
- PHP中PDO的MYSQL事务处理实例
- php使用PDO的方式连接mysql
- 你说 后来
- 前端js+ajax+css/后端springMVC项目1总结
- mySQL数据库
- 【转载】XCode工程中 Project 和 Targets区别
- 机器学习中常用到的知识点总结
- php的pdo数据层mysql类
- HDU 1671 Phone List 字典树(Trie)
- 3.Redis keys 命令
- HorizontalScrollView组合RadioGroup,实现点击RadioButton时自动滚动
- QPainter的用法
- JAVA HashMap详解
- 简单谈谈Cookie,Session与Cache之间的区别
- A - Tree Recovery(已知前序中序 求后序)
- xcodebuild脚本打包的使用