封装PDO类
2016-09-12 16:28
33 查看
<?php /** * Created by PhpStorm. * User: lewishgl * Date: 2016/8/31 * Time: 11:13 上午 */ //使用pdo连接数据库 封装增删改查 class DB{ //定义私有属性 private $host; private $port; private $username; private $password; private $dbname; private $charset; private $dbtype; private $pdo; //定义构造函数自动加载配置文件 function __construct(){ //加载配置文件 include_once('./config/config.php'); //给属性赋值 $this->dbtype = $config['db']; $this->host = $config['host']; $this->username = $config['username']; $this->password = $config['password']; $this->charset = $config['charset']; $this->port = $config['port']; $this->dbname = $config['dbname']; //pdo连接数据库 $this->pdo = new PDO("$this->dbtype:host=$this->host;dbname=$this->dbname","$this->username","$this->password"); //发送编码 $this->pdo->query("set names $this->charset"); } /** * 定义执行查询sql语句的方法 * 参数: 查询sql语句 < 4000 span style="background-color:inherit;color:rgb(117,113,94);"> * 返回: 二维关联数组 */ public function query($sql){ $res = $this->pdo->query($sql); $res->setFetchMode(PDO::FETCH_ASSOC); $arr = $res->fetchAll(); return $arr; } /** * 查询一行记录的方法 * 参数:表名 条件(不包含where) * 返回:一维关联数组 */ public function getRow($tablename,$where){ //组装sql语句 $sql = "select * from $tablename where $where"; //查询 $res = $this->pdo->query($sql); $res->setFetchMode(PDO::FETCH_ASSOC); $arr = $res->fetch(); return $arr; } /** * 查询全部记录 * 参数:表名 * 返回:二维关联数组 */ public function getAll($tablename){ $res = $this->pdo->query("select * from $tablename"); $res->setFetchMode(PDO::FETCH_ASSOC); $arr = $res->fetchAll(); return $arr; } /** * 查询某个字段 * 参数: 字段名(多个的话用逗号隔开) 表名 条件(不含where) * 返回: 二维关联数组 */ public function getOne($column,$tablename,$where="1"){ //拼接sql语句 $sql = "select $column from $tablename where $where"; $rs = $this->pdo->query($sql); $rs->setFetchMode(PDO::FETCH_ASSOC); //$col = $rs->fetchColumn(); $col = $rs->fetchAll(); return $col; } /** * 查询最后一次插入的数据 * 参数:表名 * 返回:数组 */ public function getlastone($tablename){ $sql = "select * from $tablename where id=(select max(id) from $tablename)"; $res = $this->pdo->query($sql); $res->setFetchMode(PDO::FETCH_ASSOC); $arr = $res->fetch(); return $arr; } /** * 向数据库中添加一条信息 * 参数:表名 一维关联数组 * 返回: 布尔值 */ public function insert($tablename,$arr){ //拿到数组之后先处理数组 过滤字段 //取出表中的字段 $sql = "select COLUMN_NAME from information_schema.COLUMNS where table_name = '$tablename' and table_schema ='$this->dbname'"; $columns = $this->pdo->query($sql); $columns->setFetchMode(PDO::FETCH_ASSOC); $columns = $columns->fetchAll(); $cols = array(); //存储表中的全部字段 foreach($columns as $key=>$val){ $cols[] = $val['COLUMN_NAME']; } //将要入库的数组进行键值分离 $keys = array(); $values = ''; foreach($arr as $k=>$v){ if(!in_array($k,$cols)){ unset($arr[$k]); }else{ $keys[] = $k; $values .= "'".$v."',"; } } $column = implode(',',$keys); $values = substr($values,0,-1); //拼接sql语句 $sql = "insert into $tablename($column) values ($values)"; $res = $this->pdo->exec($sql); return $res; } /** * 删除数据 其实就是改变字段值使之不被查询 * 参数:表名 条件(不含where) * 返回:布尔 */ public function delete($tablename,$where){ $sql = "update $tablename set is_del=1 where $where"; $res = $this->pdo->exec($sql); return $res; } /** * 修改数据 * 参数:表名 要修改的数据的数组 * 返回:布尔 */ public function update($tablename,$arr,$where){ //处理传过来的数组 $str = ""; foreach($arras $k=>$v){ $str .= "$k='".$v."',"; } //截取字符串 $str = substr($str,0,-1); //拼接sql语句 $sql = "update $tablename set $str where $where"; $res = $this->pdo->exec($sql); return $res; } }
相关文章推荐
- 关于PHP通过PDO用中文条件查询MySQL的问题。
- PHP中PDO基础教程 入门级
- PHP中PDO连接数据库中各种DNS设置方法小结
- PHP的PDO常用类库实例分析
- 对PHP PDO的一些认识小结
- PHP中PDO的错误处理
- PHP使用PDO操作数据库的乱码问题解决方法
- PDO取Oracle lob大字段,当数据量太大无法取出的问题的解决办法
- PHP PDO函数库(PDO Functions)第1/2页
- mysql,mysqli,PDO的各自不同介绍
- 在PHP中PDO解决中文乱码问题的一些补充
- php5 pdo新改动加载注意事项
- PHP 在5.1.* 和5.2.*之间 PDO数据库操作中的不同之处小结
- PHP PDO fetch 模式各种参数的输出结果一览
- php中数据库连接方式pdo和mysqli对比分析
- PHP中PDO的事务处理分析
- php使用PDO操作MySQL数据库实例
- php使用pdo连接sqlite3的配置示例
- Linux(CentOS)下PHP扩展PDO编译安装的方法
- PHP5.2中PDO的简单使用方法