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中在PDO中使用事务(Transaction)
May 14 PHP
用来解析.htgroup文件的PHP类
Sep 05 PHP
解析用PHP读写音频文件信息的详解(支持WMA和MP3)
May 10 PHP
php根据身份证号码计算年龄的实例代码
Jan 18 PHP
PHP @ at 记号的作用示例介绍
Oct 10 PHP
PHP实现发送邮件的方法(基于简单邮件发送类)
Dec 17 PHP
利用php做服务器和web前端的界面进行交互
Oct 31 PHP
PHP自带方法验证邮箱、URL、IP是否合法的函数
Dec 08 PHP
redirect_uri参数错误的解决方法(必看)
Feb 16 PHP
详解PHP防止盗链防止迅雷下载的方法
Apr 26 PHP
PHP4和PHP5版本下解析XML文档的操作方法实例分析
May 20 PHP
php远程请求CURL案例(爬虫、保存登录状态)
Apr 01 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
smarty巧妙处理iframe中内容页的代码
2012/03/07 PHP
php+js实现图片的上传、裁剪、预览、提交示例
2013/08/27 PHP
PHP 验证登陆类分享
2015/03/13 PHP
详解PHP发送邮件知识点
2018/05/06 PHP
PHP中rename()函数的妙用讲解
2019/02/28 PHP
javascript创建数组之联合数组的使用方法示例
2013/12/26 Javascript
JQuery中使用ajax传输超大数据的解决方法
2014/07/14 Javascript
网页收藏夹显示ICO图标(代码少)
2015/08/04 Javascript
学习javascript面向对象 理解javascript对象
2016/01/04 Javascript
AngularJS 基础ng-class-even指令用法
2016/08/01 Javascript
Json按某个键的值进行排序
2016/12/22 Javascript
使用Promise链式调用解决多个异步回调的问题
2017/01/15 Javascript
js遍历获取表格内数据的方法(必看)
2017/04/06 Javascript
react开发中如何使用require.ensure加载es6风格的组件
2017/05/09 Javascript
vue实现通讯录功能
2018/07/14 Javascript
详解js中let与var声明变量的区别
2020/04/05 Javascript
从Node.js事件触发器到Vue自定义事件的深入讲解
2020/06/26 Javascript
通过实例解析js可枚举属性与不可枚举属性
2020/12/02 Javascript
Python字符串替换实例分析
2015/05/11 Python
python好玩的项目—色情图片识别代码分享
2017/11/07 Python
Python使用re模块正则提取字符串中括号内的内容示例
2018/06/01 Python
零基础使用Python读写处理Excel表格的方法
2019/05/02 Python
django中forms组件的使用与注意
2019/07/08 Python
基于Numba提高python运行效率过程解析
2020/03/02 Python
Python fileinput模块如何逐行读取多个文件
2020/10/05 Python
python eventlet绿化和patch原理
2020/11/21 Python
自考生自我评价分享
2014/01/18 职场文书
表彰先进的通报
2014/01/31 职场文书
无财产离婚协议书范本
2014/10/28 职场文书
2014年采购工作总结
2014/11/20 职场文书
优秀高中学生评语
2014/12/30 职场文书
服务员岗位职责
2015/02/03 职场文书
听证通知书
2015/04/24 职场文书
2015年城市管理工作总结
2015/05/23 职场文书
python实现腾讯滑块验证码识别
2021/04/27 Python
Python绘画好看的星空图
2022/03/17 Python