封装pdo类
来源:互联网 发布:网络专供和专柜 编辑:程序博客网 时间:2024/05/16 11:27
<?php
//使用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语句
* 返回: 二维关联数组
*/
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;
}
}
阅读全文
0 0
- pdo 封装类
- php 封装PDO类
- pdo封装类
- php 封装PDO类
- 封装PDO类
- 封装pdo类
- PDO数据库操作封装类
- PHP PDO(mysql) 封装类
- 将PDO封装成类
- PDO封装
- PDO使用归纳【PHP】 【任务】将PDO封装成类
- PDO链接多种数据库,封装个PDO类
- PHP PDO 封装 成静态类
- pdo 连接数据库封装成一个类
- php PDO封装
- phalcon pdo封装
- 5. PDO 数据库封装
- php mysql PDO封装
- angularjs购物车,排序,筛选,全选,删除,确认是否删除
- Apache下开启SSI配置,使html支持include包含
- java开发中各种中文乱码问题解决策略
- onos中的intent
- STM32F ADC 多通道 非DMA
- 封装pdo类
- 高德地图(三) Marker 设置网络图片
- Maven关于编码GBK的不可映射字符的问题
- virtualbox中centos系统配置nat+host only上网
- 怎么恢复回收站清空的文件,快速找回回收站文件方法
- Spark内核源码深度剖析:sparkContext初始化的源码核心
- 用脚本控制对象的大小
- hdu 1081 To The Max (简单题)....
- axis2 WebService的发布与调用