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 相关文章推荐
php执行sql语句的写法
Mar 10 PHP
php快速url重写 更新版[需php 5.30以上]
Apr 20 PHP
PHP 中文处理技巧
Apr 25 PHP
有关phpmailer的详细介绍及使用方法
Jan 28 PHP
PHP base64编码后解码乱码的解决办法
Jun 19 PHP
php similar_text()函数的定义和用法
May 12 PHP
php实现批量删除挂马文件及批量替换页面内容完整实例
Jul 08 PHP
PHP多进程编程总结(推荐)
Jul 18 PHP
手把手编写PHP框架 深入了解MVC运行流程
Sep 19 PHP
PHP实现防盗链的方法分析
Jul 25 PHP
Laravel 实现数据软删除功能
Aug 21 PHP
PHP isset()及empty()用法区别详解
Aug 29 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版(5)
2006/10/09 PHP
使用apache模块rewrite_module (转)
2007/02/14 PHP
解析php中curl_multi的应用
2013/07/17 PHP
Thinkphp中的volist标签用法简介
2014/06/18 PHP
实例介绍PHP的Reflection反射机制
2014/08/05 PHP
Laravel 5.5 异常处理 &amp; 错误日志的解决
2019/10/17 PHP
原型方法的不同写法居然会影响调试的解决方法
2007/03/08 Javascript
JavaScript 对象、函数和继承
2009/07/07 Javascript
弹出窗口并且此窗口带有半透明的遮罩层效果
2014/03/13 Javascript
js实现简单的购物车有图有代码
2014/05/26 Javascript
jQuery中contents()方法用法实例
2015/01/08 Javascript
js超时调用setTimeout和间歇调用setInterval实例分析
2015/01/28 Javascript
简单谈谈node.js 版本控制 nvm和 n
2015/10/15 Javascript
uploadify多文件上传参数设置技巧
2015/11/16 Javascript
js事件处理程序跨浏览器解决方案
2016/03/27 Javascript
JavaScript定义全局对象的方法示例
2017/01/12 Javascript
Javascript 链式作用域详细介绍
2017/02/23 Javascript
javascript input输入框模糊提示功能的实现
2017/09/25 Javascript
微信小程序如何再次获取用户授权的方法
2019/05/10 Javascript
JavaScript学习教程之cookie与webstorage
2019/06/23 Javascript
详解vue组件之间的通信
2020/08/30 Javascript
Vue+Element ui 根据后台返回数据设置动态表头操作
2020/09/21 Javascript
跟老齐学Python之传说中的函数编写条规
2014/10/11 Python
python获取标准北京时间的方法
2015/03/24 Python
python计算时间差的方法
2015/05/20 Python
python3中dict(字典)的使用方法示例
2017/03/22 Python
Python内置函数reversed()用法分析
2018/03/20 Python
Django基础三之视图函数的使用方法
2019/07/18 Python
Win10环境中如何实现python2和python3并存
2020/07/20 Python
英国男女豪华配饰和礼品网站:Black.co.uk
2020/02/28 全球购物
Carrs Silver官网:英国著名的银器品牌
2020/08/29 全球购物
茶叶生产计划书
2014/01/10 职场文书
项目战略合作意向书
2015/05/08 职场文书
悬崖上的金鱼姬观后感
2015/06/15 职场文书
导游词之江南园林狮子林
2019/09/16 职场文书
MySQL COUNT函数的使用与优化
2021/05/10 MySQL