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维护文件系统
Oct 09 PHP
PHP输出控制功能在简繁体转换中的应用
Oct 09 PHP
如何对PHP程序中的常见漏洞进行攻击(下)
Oct 09 PHP
在PHP中使用反射技术的架构插件使用说明
May 18 PHP
php使用base64加密解密图片示例分享
Jan 20 PHP
PHP面向对象教程之自定义类
Jun 10 PHP
ThinkPHP之用户注册登录留言完整实例
Jul 22 PHP
深入浅出php socket编程
May 13 PHP
PHP调用存储过程返回值不一致问题的解决方法分析
Apr 26 PHP
Windows下PHP开发环境搭建教程(Apache+PHP+MySQL)
Jun 13 PHP
php关联数组与索引数组及其显示方法
Mar 12 PHP
PHP实现微信提现功能(微信商城)
Nov 21 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
BBS(php &amp; mysql)完整版(二)
2006/10/09 PHP
php后台程序与Javascript的两种交互方式
2009/10/25 PHP
慎用preg_replace危险的/e修饰符(一句话后门常用)
2013/06/19 PHP
php数值转换时间及时间转换数值用法示例
2017/05/18 PHP
PHP中常见的密码处理方式和建议总结
2018/10/14 PHP
Yii框架分页技术实例分析
2019/08/30 PHP
Js 获取当前日期时间及其它操作实现代码
2021/03/04 Javascript
JavaScript中的console.group()函数详细介绍
2014/12/29 Javascript
浅谈javascript实现八大排序
2015/04/27 Javascript
使用jQuery UI库开发Web界面的简单入门指引
2016/04/22 Javascript
内容滑动切换效果jquery.hwSlide.js插件封装
2016/07/07 Javascript
微信小程序开发之视频播放器 Video 弹幕 弹幕颜色自定义实例
2016/12/08 Javascript
jQuery实现拖拽可编辑模块功能代码
2017/01/12 Javascript
各种选择框jQuery的选中方法(实例讲解)
2017/06/27 jQuery
详解jQuery-each()方法
2019/03/13 jQuery
详解VUE调用本地json的使用方法
2019/05/15 Javascript
vue 集成 vis-network 实现网络拓扑图的方法
2019/08/07 Javascript
微信小程序使用echarts获取数据并生成折线图
2019/10/16 Javascript
JavaScript canvas实现雪花随机动态飘落
2020/02/08 Javascript
[01:59]翻天覆地,因你而变,7.20版本地图更新速览
2018/11/24 DOTA
[03:01]完美盛典趣味短片 DOTA2年度最佳&拉胯英雄
2019/12/07 DOTA
python2.7 mayavi 安装图文教程(推荐)
2017/06/22 Python
Python调用jar包方法实现过程解析
2020/08/11 Python
python+flask编写一个简单的登录接口
2020/11/13 Python
英国网上香水店:Fragrance Direct
2016/07/20 全球购物
高级技校毕业生自荐信
2013/11/18 职场文书
施工材料员岗位职责
2014/02/12 职场文书
岗位廉洁从业承诺书
2014/03/28 职场文书
数据保密承诺书
2014/06/03 职场文书
银行业务授权委托书
2014/10/10 职场文书
离婚协议书范文2014
2014/10/16 职场文书
2015年度员工自我评价范文
2015/03/11 职场文书
2016年小学生寒假总结
2015/10/10 职场文书
大学学生会主席竞选稿
2015/11/19 职场文书
2016年小学党支部创先争优活动总结
2016/04/05 职场文书
CocosCreator ScrollView优化系列之分帧加载
2021/04/14 Python