php实现的pdo公共类定义与用法示例


Posted in PHP onJuly 19, 2017

本文实例讲述了php实现的pdo公共类定义与用法。分享给大家供大家参考,具体如下:

db.class.php :

<?php
class db extends \PDO {
  private static $_instance = null;
  protected $dbName = '';
  protected $dsn;
  protected $dbh;
  public function __construct($dbHost, $dbUser, $dbPasswd, $dbName, $dbCharset='utf8') {
    try {
      $this->dsn = 'mysql:host=' . $dbHost . ';dbname=' . $dbName;
      $this->dbh = new \PDO($this->dsn, $dbUser, $dbPasswd);
      $this->dbh->setAttribute(\PDO::ATTR_EMULATE_PREPARES, false);
      $this->dbh->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
      $this->dbh->exec('SET character_set_connection='.$dbCharset.';SET character_set_client='.$dbCharset.';SET character_set_results='.$dbCharset);
    } catch (Exception $e) {
      $this->outputError($e->getMessage()); 
    }
  }
  public static function getInstance($dbHost, $dbUser, $dbPasswd, $dbName, $dbCharset='utf8') {
    if (self::$_instance === null) {
      self::$_instance = new self($dbHost, $dbUser, $dbPasswd, $dbName, $dbCharset);
    }
    return self::$_instance;
  }
  public function fetchAll($sql, $params = array()) {
    try {
      $stm = $this->dbh->prepare($sql);
      if ($stm && $stm->execute($params)) {
        return $stm->fetchAll(\PDO::FETCH_ASSOC);
      }
    } catch (Exception $e) {
      $this->outputError($e->getMessage());
    }
  }
  public function fetchOne($sql, $params = array()) {
    try {
      $result = false;
      $stm = $this->dbh->prepare($sql);
      if ($stm && $stm->execute($params)) {
        $result = $stm->fetch(\PDO::FETCH_ASSOC);
      }
      return $result;
    } catch (Exception $e) {
      $this->outputError($e->getMessage());
    }
  }
  public function fetchColumn($sql, $params = array()) {
    $result = '';
    try {
      $stm = $this->dbh->prepare($sql);
      if ($stm && $stm->execute($params)) {
        $result = $stm->fetchColumn();
      }
      return $result;
    } catch (Exception $e) {
      $this->outputError($e->getMessage());
    }
  }
  public function insert($table, $params = array(), $returnLastId = true) {
    $_implode_field = '';
    $fields = array_keys($params);
    $_implode_field = implode(',', $fields);
    $_implode_value = '';
    foreach ($fields as $value) {
      $_implode_value .= ':'. $value.',';
    }
    $_implode_value = trim($_implode_value, ',');
    $sql = 'INSERT INTO ' . $table . '(' . $_implode_field . ') VALUES ('.$_implode_value.')';
    try {
      $stm = $this->dbh->prepare($sql);
      $result = $stm->execute($params);
      if ( $returnLastId ) {
        $result = $this->dbh->lastInsertId();
      }
      return $result;
    } catch (Exception $e) {
      $this->outputError($e->getMessage());
    }
  }
  public function update($table, $params = array(), $where = null) {
    $_implode_field = '';
    $_implode_field_arr = array();
    if ( empty($where) ) {
      return false;
    }
    $fields = array_keys($params);
    foreach ($fields as $key) {
      $_implode_field_arr[] = $key . '=' . ':'.$key;
    }
    $_implode_field = implode(',', $_implode_field_arr);
    $sql = 'UPDATE ' . $table . ' SET ' . $_implode_field . ' WHERE ' . $where;
    try {
      $stm = $this->dbh->prepare($sql);
      $result = $stm->execute($params);
      return $result;
    } catch (Exception $e) {
      $this->outputError($e->getMessage());
    }
  }
  public function delete($sql, $params = array()) {
    try {
      $stm = $this->dbh->prepare($sql);
      $result = $stm->execute($params);
      return $result;
    } catch (Exception $e) {
      $this->outputError($e->getMessage());
    }
  }
  public function exec($sql, $params = array()) {
    try {
      $stm = $this->dbh->prepare($sql);
      $result = $stm->execute($params);
      return $result;
    } catch (Exception $e) {
      $this->outputError($e->getMessage());
    }
  }
  private function outputError($strErrMsg) {
    throw new Exception("MySQL Error: " . $strErrMsg);
  }
  public function __destruct() {
    $this->dbh = null;
  }
}

实例:

<?php
require_once './db.class.php';
$pdo = db::getInstance('127.0.0.1', 'root', '111111', 'php_cms');
$sql = "select id, title1 from cms_wz where id = :id limit 1";
$parame = array('id' => 12,);
$res = $pdo->fetchOne($sql, $parame);
var_dump($res);
$sql = 'SELECT * FROM cms_link';
$result = $db->fetchAll($sql);
print_r($result);
//查询记录数量
$sql = 'SELECT COUNT(*) FROM cms_link';
$count = $db->fetchColumn($sql);
echo $count;
$data = array(
  'siteid' => 1,
  'linktype' => 1,
  'name' => 'google',
  'url' => 'http://www.google.com',
  'listorder' => 0,
  'elite' => 0,
  'passed' => 1,
  'addtime' => time()
  );
$lastInsertId = $db->insert('cms_link', $data);
echo $lastInsertId;
//用 try
 try {
     $result = $pdo->insert('news', $essay);
   } catch (Exception $e) {
     error_log($e->getMessage());
     error_log($e->getMessage() . ' in ' . __FILE__ . ' on line ' . __LINE__);
     saveLog('url文章 : ' . $essay['link'] . '  数据插入失败<br>');
     continue;
   }
$data = array(
  'siteid' => 1,
  'linktype' => 1,
  'name' => 'google',
  'url' => 'http://www.google.com',
  'listorder' => 0,
  'elite' => 0,
  'passed' => 1,
  'addtime' => time()
  );
$db->insert('cms_link', $data);
$sql = 'DELETE FROM cms_link WHERE linkid=4';
$result = $db->delete($sql);
var_dump($result);

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
我的论坛源代码(五)
Oct 09 PHP
PHP4实际应用经验篇(8)
Oct 09 PHP
php调用mysql存储过程
Feb 14 PHP
PHP session常见问题集锦及解决办法总结
Mar 18 PHP
详解PHP显示MySQL数据的三种方法
Jun 05 PHP
php 处理上百万条的数据库如何提高处理查询速度
Feb 08 PHP
php在程序中将网页生成word文档并提供下载的代码
Oct 09 PHP
php实现统计邮件大小的方法
Aug 06 PHP
zf框架的db类select查询器join链表使用示例(zend框架)
Mar 14 PHP
PHP采用自定义函数实现遍历目录下所有文件的方法
Aug 19 PHP
浅谈php7的重大新特性
Oct 23 PHP
php快速排序原理与实现方法分析
May 26 PHP
PHP多进程编程实例详解
Jul 19 #PHP
PHP preg_match实现正则表达式匹配功能【输出是否匹配及匹配值】
Jul 19 #PHP
php实现生成code128条形码的方法详解
Jul 19 #PHP
php-beanstalkd消息队列类实例分享
Jul 19 #PHP
php+ajax实现异步上传文件或图片功能
Jul 18 #PHP
Joomla框架实现字符串截取的方法示例
Jul 18 #PHP
PHP新特性详解之命名空间、性状与生成器
Jul 18 #PHP
You might like
用PHP实现小型站点广告管理
2006/10/09 PHP
php环境配置之CGI、FastCGI、PHP-CGI、PHP-FPM、Spawn-FCGI比较?
2011/10/17 PHP
PHP5各个版本的新功能和新特性总结
2014/03/16 PHP
php实现压缩合并js的方法【附demo源码下载】
2016/09/22 PHP
Laravel的throttle中间件失效问题解决方法
2016/10/09 PHP
php 算法之实现相对路径的实例
2017/10/17 PHP
JavaScript Accessor实现说明
2010/12/06 Javascript
js+html5通过canvas指定开始和结束点绘制线条的方法
2015/06/05 Javascript
angular2 ng build部署后base文件路径问题详细解答
2017/07/15 Javascript
Vue添加请求拦截器及vue-resource 拦截器使用
2017/11/23 Javascript
利用Dectorator分模块存储Vuex状态的实现
2019/02/05 Javascript
基于vue.js仿淘宝收货地址并设置默认地址的案例分析
2020/08/20 Javascript
js实现拖拽与碰撞检测
2020/09/18 Javascript
vue实现树状表格效果
2020/12/29 Vue.js
Vue SPA 首屏优化方案
2021/02/26 Vue.js
浅析Python中MySQLdb的事务处理功能
2016/09/21 Python
Python中工作日类库Busines Holiday的介绍与使用
2017/07/06 Python
15行Python代码实现网易云热门歌单实例教程
2019/03/10 Python
python的依赖管理的实现
2019/05/14 Python
简单了解django缓存方式及配置
2019/07/19 Python
python NumPy ndarray二维数组 按照行列求平均实例
2019/11/26 Python
教你如何用python操作摄像头以及对视频流的处理
2020/10/12 Python
师范学院美术系毕业生自我鉴定
2014/01/29 职场文书
初中三好学生自我鉴定
2014/04/07 职场文书
仓库管理计划书
2014/05/04 职场文书
火锅店的活动方案
2014/08/15 职场文书
“三支一扶”支教教师思想汇报
2014/09/13 职场文书
2015年元旦文艺晚会总结(学院)
2014/11/28 职场文书
感谢信格式范文
2015/01/22 职场文书
酒店服务员岗位职责
2015/02/09 职场文书
中学生社会实践教育活动总结
2015/05/06 职场文书
反腐倡廉影片观后感
2015/06/08 职场文书
初中团委工作总结
2015/08/13 职场文书
各类场合主持词开场白范文集锦
2019/08/16 职场文书
Python基础之函数嵌套知识总结
2021/05/23 Python
Go语言 详解net的tcp服务
2022/04/14 Golang