PHP封装的PDO数据库操作类实例


Posted in PHP onJune 21, 2017

本文实例讲述了PHP封装的PDO数据库操作类。分享给大家供大家参考,具体如下:

<?php
class DatabaseHandler {
    /**
     * sql语句查询
     */
    public static function query_data ($dataName,$sql,$query=array()) {
      $result = array();
      if (!empty($sql)) {
        $data = Bj_PdoDB::factory($dataName)->allPrepare($sql, $query);
        if (!$data->isEmpty()) {
          $result = $data->data;
        }
      }
      return $result;
    }
    /**
     * 查询数据
     */
    public static function select_data ($dataName,$tableName,$where,$param=array(),$desc='') {
      $result = array();
      $query = array();
      $query_str = '1=1';
      $tmp = '';
      $str_arr = '';
      if (!empty($param)) {
        $str = '';
        foreach ($param as $val) {
          $str .= '`'.$val.'`,';
        }
        $str = substr($str,0,-1);
      }
      $str_arr = !empty($str) ? $str : '*';
      if ( !empty($where) ) {
        foreach ($where as $key => $value) {
          $tmp .= ' AND '.$key.'=:'.$key.'';
          $query[':'.$key] = $value;
        }
      }
      $query_str .= $tmp;
      if (!empty($desc)) {
        $query_str .= $desc;
      }
      $sql = "SELECT {$str_arr} FROM `".$tableName."` WHERE {$query_str} ";
      $query_data = Bj_PdoDB::factory($dataName)->allPrepare($sql, $query);
      if ( !$query_data->isEmpty() ) {
        $result = $query_data->data;
      }
      return $result;
    }
    /**
     * 批量添加信息
     */
    public static function insert_data($dataName,$tableName,$add_param){
      $flag = false;
      if (!empty($add_param)) {
        $fileds = array();
        $str = '';
        foreach($add_param as $k=>$val){
          $str .= '(';
          $i = 0;
          foreach ($val as $key=>$vl) {
            $fileds[$i] = '`'.$key.'`';
            $str .= "'".addslashes($vl)."',";
            $i++;
          }
          $str = substr($str,0,-1);
          $str .= '),';
        }
        $filed_str = implode(',',$fileds);
        $val_str = substr($str,0,-1);
        $sql = "INSERT INTO `".$tableName."` ({$filed_str}) VALUES {$val_str}";
        $ret = Bj_PdoDB::factory($dataName)->insertPrepare($sql);
        if ( !$ret->isEmpty() ) {
            $insertId = $ret->data;
            if($insertId > 0){
              return $insertId;
            }
        }
      }
      return $flag;
    }
  /**
   * 删除数据
   */
  public static function delete_data ($dataName,$tableName,$id) {
    $query = array(':id' => $id);
    $sql = "DELETE FROM ". $tableName. " WHERE `id`=:id";
    $db_res = Bj_PdoDB::factory($dataName)->simplePrepare($sql,$query);
    return $db_res->data;
  }
  /**
   * 更新数据
   */
  public static function update_data ($dataName,$tableName,$id,$array) {
    $flag = false;
    if ( !empty($array) && !empty($id)) {
      $query = array(':id' => $id);
      $up_str = '';
      foreach($array as $key=>$val) {
        $query[':'.$key] = addslashes($val);
        $up_str .= '`'.$key.'`=:'.$key.',';
      }
      $up_str = substr($up_str,0,-1);
      $sql = "UPDATE `".$tableName."` SET ".$up_str." WHERE `id`=:id";
      $db_res = Bj_PdoDB::factory($dataName)->changePrepare($sql, $query);
      $flag = true;
    }
    return $flag;
  }
  /**
   * 事务
   */
  public static function transactionHandler($dataName,$type){
    switch ($type) {
      case 'begin':
        return Bj_PdoDB::factory($dataName)->beginTransaction();
        break;
      case 'commit':
        return Bj_PdoDb::factory($dataName)->commit();
        break;
      case 'rollback':
        return Bj_PdoDb::factory($dataName)->rollback();
        break;
      default :
        exit;
    }
  }
  /**
   * curl获取数据get
   */
  public static function curl_data ($curl_url){
    if (!empty($curl_url)) {
      $ch = curl_init();
      curl_setopt($ch, CURLOPT_URL, $curl_url);
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
      curl_setopt($ch, CURLOPT_HEADER, 0);
      $output = curl_exec($ch);
      curl_close($ch);
      return $output;
    }
    return false;
  }
  /**
   * curl提交数据
   */
  public static function curl_data_post ($ch_url,$param) {
    $result = array();
    if (!empty($ch_url) && !empty($param)) {
      $query_string = http_build_query($param);
      $ch = curl_init();
      curl_setopt($ch, CURLOPT_URL, $ch_url);
      curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
      curl_setopt($ch, CURLOPT_POST,1);
      curl_setopt($ch, CURLOPT_POSTFIELDS, $query_string);
      curl_setopt($ch, CURLOPT_HTTPHEADER,array("application/x-www-form-urlencoded; charset=UTF-8"));
      $output = curl_exec($ch);
      curl_close($ch);
      $result = !empty($output) ? json_decode($output,true) : array();
    }
    return $result;
  }
}

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

PHP 相关文章推荐
PHP文件上传实例详解!!!
Jan 02 PHP
php中CI操作多个数据库的代码
Jul 05 PHP
php数组编码转换示例详解
Mar 11 PHP
浅析PHP编程中10个最常见的错误
Aug 08 PHP
php读取mssql的ntext字段返回值为空的解决方法
Dec 30 PHP
php简单防盗链实现方法
Jul 29 PHP
CI框架实现优化文件上传及多文件上传的方法
Jan 04 PHP
关于php支持的协议与封装协议总结(推荐)
Nov 17 PHP
PHP PDOStatement::fetchColumn讲解
Jan 31 PHP
YII框架学习笔记之命名空间、操作响应与视图操作示例
Apr 30 PHP
Laravel框架实现调用百度翻译API功能示例
May 30 PHP
Laravel 简单实现Ajax滚动加载示例
Oct 22 PHP
PHP基于ORM方式操作MySQL数据库实例
Jun 21 #PHP
php 猴子摘桃的算法
Jun 20 #PHP
详解php框架Yaf路由重写
Jun 20 #PHP
PHP简单计算两个时间差的方法示例
Jun 20 #PHP
php实现的错误处理封装类实例
Jun 20 #PHP
PHP实现在windows下配置sendmail并通过mail()函数发送邮件的方法
Jun 20 #PHP
php实现的双色球算法示例
Jun 20 #PHP
You might like
PHP语法速查表
2006/12/06 PHP
PHP代码实现表单数据验证类
2015/07/28 PHP
在WordPress的文章编辑器中设置默认内容的方法
2015/12/29 PHP
php实现背景图上添加圆形logo图标的方法
2016/11/17 PHP
Laravel框架中Blade模板的用法示例
2017/08/30 PHP
js 实现无缝滚动 兼容IE和FF
2009/07/15 Javascript
js 获取坐标 通过JS得到当前焦点(鼠标)的坐标属性
2013/01/04 Javascript
用js写了一个类似php的print_r输出换行功能
2013/02/18 Javascript
jQuery prev ~ siblings选择器使用介绍
2013/08/09 Javascript
node.js中的fs.write方法使用说明
2014/12/15 Javascript
jQuery实现tab选项卡效果的方法
2015/07/08 Javascript
学习JavaScript设计模式(代理模式)
2015/12/03 Javascript
js实现新年倒计时效果
2015/12/10 Javascript
JavaScript+Java实现HTML页面转为PDF文件保存的方法
2016/05/30 Javascript
EasyUI折叠表格层次显示detailview详解及实例
2016/12/28 Javascript
bootstrapValidator bootstrap-select验证不可用的解决办法
2017/01/11 Javascript
微信小程序 WXML节点信息查询详解
2019/07/29 Javascript
JS使用正则表达式提交页面验证的代码
2019/10/16 Javascript
微信浏览器左上角返回按钮监听的实现
2020/03/04 Javascript
JS操作JSON常用方法(10w阅读)
2020/12/06 Javascript
pandas数据清洗,排序,索引设置,数据选取方法
2018/05/18 Python
浅谈PyQt5 的帮助文档查找方法,可以查看每个类的方法
2019/06/25 Python
python实现通过队列完成进程间的多任务功能示例
2019/10/28 Python
Python 时间戳之获取整点凌晨时间戳的操作方法
2020/01/28 Python
CSS3 translate导致字体模糊的实例代码
2019/08/30 HTML / CSS
英国第一的滑雪服装和装备零售商:Snow+Rock
2020/02/01 全球购物
空指针到底是什么
2012/08/07 面试题
优秀员工自荐信范文
2013/10/05 职场文书
单位领导证婚词
2014/01/14 职场文书
法律专业学生的自我评价
2014/02/07 职场文书
表彰大会主持词
2014/03/26 职场文书
文明村创建实施方案
2014/03/27 职场文书
优秀应届毕业生自荐书
2014/06/29 职场文书
乡镇法制宣传日活动总结
2015/05/05 职场文书
Win10此设备不支持接收Miracast无法投影的解决方法
2022/07/07 数码科技
redis lua限流算法实现示例
2022/07/15 Redis