PHP PDO类
- <?php
- //数据库连接类,不建议直接使用DB,而是对DB封装一层
- //这个类不会被污染,不会被直接调用
- class DB {
- //pdo对象
- private $_pdo = null;
- //用于存放实例化的对象
- static private $_instance = null;
- //公共静态方法获取实例化的对象
- static protected function getInstance() {
- if (!(self::$_instance instanceof self)) {
- self::$_instance = new self();
- }
- return self::$_instance;
- }
- //私有克隆
- private function __clone() {}
- //私有构造
- private function __construct() {
- try {
- $this->_pdo = new PDO(DB_DNS, DB_USER, DB_PASS, array(PDO::MYSQL_ATTR_INIT_COMMAND=>'SET NAMES '.DB_CHARSET));
- $this->_pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
- } catch (PDOException $e) {
- exit($e->getMessage());
- }
- }
- //新增
- protected function add($_tables, Array $_addData) {
- $_addFields = array();
- $_addValues = array();
- foreach ($_addData as $_key=>$_value) {
- $_addFields[] = $_key;
- $_addValues[] = $_value;
- }
- $_addFields = implode(',', $_addFields);
- $_addValues = implode("','", $_addValues);
- $_sql = "INSERT INTO $_tables[0] ($_addFields) VALUES ('$_addValues')";
- return $this->execute($_sql)->rowCount();
- }
- //修改
- protected function update($_tables, Array $_param, Array $_updateData) {
- $_where = $_setData = '';
- foreach ($_param as $_key=>$_value) {
- $_where .= $_value.' AND ';
- }
- $_where = 'WHERE '.substr($_where, 0, -4);
- foreach ($_updateData as $_key=>$_value) {
- if (Validate::isArray($_value)) {
- $_setData .= "$_key=$_value[0],";
- } else {
- $_setData .= "$_key='$_value',";
- }
- }
- $_setData = substr($_setData, 0, -1);
- $_sql = "UPDATE $_tables[0] SET $_setData $_where";
- return $this->execute($_sql)->rowCount();
- }
- //验证一条数据
- protected function isOne($_tables, Array $_param) {
- $_where = '';
- foreach ($_param as $_key=>$_value) {
- $_where .=$_value.' AND ';
- }
- $_where = 'WHERE '.substr($_where, 0, -4);
- $_sql = "SELECT id FROM $_tables[0] $_where LIMIT 1";
- return $this->execute($_sql)->rowCount();
- }
- //删除
- protected function delete($_tables, Array $_param) {
- $_where = '';
- foreach ($_param as $_key=>$_value) {
- $_where .= $_value.' AND ';
- }
- $_where = 'WHERE '.substr($_where, 0, -4);
- $_sql = "DELETE FROM $_tables[0] $_where LIMIT 1";
- return $this->execute($_sql)->rowCount();
- }
- //查询
- protected function select($_tables, Array $_fileld, Array $_param = array()) {
- $_limit = $_order = $_where = $_like = '';
- if (Validate::isArray($_param) && !Validate::isNullArray($_param)) {
- $_limit = isset($_param['limit']) ? 'LIMIT '.$_param['limit'] : '';
- $_order = isset($_param['order']) ? 'ORDER BY '.$_param['order'] : '';
- if (isset($_param['where'])) {
- foreach ($_param['where'] as $_key=>$_value) {
- $_where .= $_value.' AND ';
- }
- $_where = 'WHERE '.substr($_where, 0, -4);
- }
- if (isset($_param['like'])) {
- foreach ($_param['like'] as $_key=>$_value) {
- $_like = "WHERE $_key LIKE '%$_value%'";
- }
- }
- }
- $_selectFields = implode(',', $_fileld);
- $_table = isset($_tables[1]) ? $_tables[0].','.$_tables[1] : $_tables[0];
- $_sql = "SELECT $_selectFields FROM $_table $_where $_like $_order $_limit";
- $_stmt = $this->execute($_sql);
- $_result = array();
- while (!!$_objs = $_stmt->fetchObject()) {
- $_result[] = $_objs;
- }
- return Tool::setHtmlString($_result);
- }
- //总记录
- protected function total($_tables, Array $_param = array()) {
- $_where = '';
- if (isset($_param['where'])) {
- foreach ($_param['where'] as $_key=>$_value) {
- $_where .= $_value.' AND ';
- }
- $_where = 'WHERE '.substr($_where, 0, -4);
- }
- $_sql = "SELECT COUNT(*) as count FROM $_tables[0] $_where";
- $_stmt = $this->execute($_sql);
- return $_stmt->fetchObject()->count;
- }
- //得到下一个ID
- protected function nextId($_tables) {
- $_sql = "SHOW TABLE STATUS LIKE '$_tables[0]'";
- $_stmt = $this->execute($_sql);
- return $_stmt->fetchObject()->Auto_increment;
- }
- //执行SQL
- private function execute($_sql) {
- try {
- $_stmt = $this->_pdo->prepare($_sql);
- $_stmt->execute();
- } catch (PDOException $e) {
- exit('SQL语句:'.$_sql.'<br />错误信息:'.$e->getMessage());
- }
- return $_stmt;
- }
- }
- ?>
PHP PDO类的更多相关文章
- 一个PDO类
下面是在网上借鉴的一个PDO类: <?php class Database{ private $host = DB_HOST; private $user = DB_USER; private ...
- PHP基于单例模式编写PDO类的方法
一.单例模式简介 简单的说,一个对象(在学习设计模式之前,需要比较了解面向对象思想)只负责一个特定的任务: 二.为什么要使用PHP单例模式? 1.php的应用主要在于数据库应用, 所以一个应用中会存在 ...
- php-验证码类-PDO类-缩略图类
Verify.class.php 验证码类 <?php class Verify{ const VERIFY_TYPE_NUM=1; const VERIFY_TYPE_EN=2; const ...
- 封装好的PDO类
封装PDO类,方便使用: <?php header('content-type:text/html;charset=utf-8'); /** * 封装PDODB类 */ // 加载接口 // i ...
- PHP PDO类 单例
<?php /*//pdo连接信息 $pdo=array("mysql:host=localhost;dbname=demo;charset=utf8","root ...
- pdo类的使用
使用方法 2.php <?php require_once "./mypdo.php"; $pdo = DAOPDO::getInstance('localhost', 'r ...
- 学习到目前,自己封装的db类和pdo类
DB封装类 <?php class DBDA { public $host = "localhost"; public $uid = "root"; pu ...
- PDO和PDOStatement类常用方法
PDO — PDO 类 PDO::beginTransaction — 启动一个事务 PDO::commit — 提交一个事务 PDO::__construct — 创建一个表示数据库连接的 PDO ...
- PHP PDO 使用类
PDO类 <?php class MYPDO { protected static $_instance = null; protected $dbName = ''; protected $d ...
随机推荐
- mybatis中parameterType可以写的别名
mybatis中parameterType可以写的别名 https://blog.csdn.net/sdzhangshulong/article/details/51749807 _byte byte ...
- UIColor延伸:判断两个颜色是否相等
不管UIColor使用CIColor,CGColor还是其他方式初始化的,其CGColor属性都是可用的.CoreGraphics中提供一个函数,用于判断两个CGColor是否相等,因此我们可以通过这 ...
- LruCache:从网络加载图片缓存实例
OOM异常 堆内存用于存储实例对象,当程序不断创建对象,并且对象都有引用指向,那么垃圾回收机制就不会清理这些对象,当对象多到挤满堆内存的上限后,就产生OOM异常.Android系统为每个应用程序使用的 ...
- centos7-每天定时备份 mysql数据库
centos7-每天定时备份 mysql数据库 第一步:编写数据库备份脚本database_mysql_shell.sh #!/bin/bash DATE=`date +%Y%m%d%H%M` #ev ...
- [Coding Practice] Maximum number of zeros in NxN matrix
Question: Input is a NxN matrix which contains only 0′s and 1′s. The condition is no 1 will occur in ...
- Maven命令创建java项目
------------------------------java项目搭建--------------------------- 使用Maven构建一个简单的Java项目 1.进入命令行,执行下面的 ...
- centos6.8安装并配置zimbra
一.对域名设置MX记录 二.安装准备 1.关闭selinux vi /etc/selinux/config SELINUX=disabled 2.iptables防火墙端口设置 # iptables ...
- Linux查看进程的所有子进程和线程
得到进程的pid: ps -ef | grep process_name | grep -v "grep" | awk '{print $2}' 查看进程的所有线程 # ps mp ...
- 【zoj3645】高斯消元求解普通线性方程
题意: 给你一个方程组(含有12个方程),求(x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11) 方程组的形式是一个二次方程组 (ai1-x1)^2 + (ai2-x2)^2 +( ...
- 基本控件文档-UILabel属性---iOS-Apple苹果官方文档翻译
本系列所有开发文档翻译链接地址:iOS7开发-Apple苹果iPhone开发Xcode官方文档翻译PDF下载地址 //转载请注明出处--本文永久链接:http://www.cnblogs.com/ ...