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 相关文章推荐
在字符串中把网址改成超级链接
Oct 09 PHP
php读取javascript设置的cookies的代码
Apr 12 PHP
array_multisort实现PHP多维数组排序示例讲解
Jan 04 PHP
分享8个最佳的代码片段在线测试网站
Jun 29 PHP
PHP循环结构实例讲解
Feb 10 PHP
php实现俄罗斯乘法实例
Mar 07 PHP
PHP抓取远程图片(含不带后缀的)教程详解
Oct 21 PHP
php基于session锁防止阻塞请求的方法分析
Aug 07 PHP
PHP连接MySQL数据库并以json格式输出
May 21 PHP
PHP封装的分页类与简单用法示例
Feb 25 PHP
Swoole实现异步投递task任务案例详解
Apr 02 PHP
laravel框架中路由设置,路由参数和路由命名实例分析
Nov 23 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统计目录大小的自定义函数分享
2014/11/18 PHP
php链表用法实例分析
2015/07/09 PHP
在JavaScript中通过URL传递汉字的方法
2007/04/09 Javascript
javascript 常用功能总结
2012/03/18 Javascript
Extjs中ComboBox加载并赋初值的实现方法
2012/03/22 Javascript
jquery 元素控制(追加元素/追加内容)介绍及应用
2013/04/21 Javascript
滚动条响应鼠标滑轮事件实现上下滚动的js代码
2014/06/30 Javascript
限制上传文件大小和格式的jQuery插件实例
2015/01/24 Javascript
JavaScript实现select添加option
2015/07/03 Javascript
浅析JavaScript作用域链、执行上下文与闭包
2016/02/01 Javascript
javascript跨域请求包装函数与用法示例
2016/11/03 Javascript
socket.io学习教程之基础介绍(一)
2017/04/29 Javascript
微信小程序之绑定点击事件实例详解
2017/07/07 Javascript
ReactNative踩坑之配置调试端口的解决方法
2017/07/28 Javascript
详解Angular5路由传值方式及其相关问题
2018/04/28 Javascript
Layui 数据表格批量删除和多条件搜索的实例
2019/09/04 Javascript
微信小程序常用的3种提示弹窗实现详解
2019/09/19 Javascript
vue实现简单加法计算器
2020/10/22 Javascript
js动态生成表格(节点操作)
2021/01/12 Javascript
[00:35]2016完美“圣”典风云人物:冷冷宣传片
2016/12/08 DOTA
[03:04]2018年度DOTA2玩家最喜爱的主播-完美盛典
2018/12/16 DOTA
python OpenCV学习笔记之绘制直方图的方法
2018/02/08 Python
python判断完全平方数的方法
2018/11/13 Python
Pandas库之DataFrame使用的学习笔记
2019/06/21 Python
python numpy 常用随机数的产生方法的实现
2019/08/21 Python
世界上最好的威士忌和烈性酒购买网站:The Whisky Exchange
2016/11/20 全球购物
美国最大的旗帜经销商:Carrot-Top
2018/02/26 全球购物
GAZMAN官网:澳大利亚领先的男装品牌
2019/12/19 全球购物
MVC的各个部分都有那些技术来实现?如何实现?
2016/04/21 面试题
计算机系毕业生推荐信
2013/11/06 职场文书
制冷与电控专业应届生求职信
2013/11/11 职场文书
酒店总经理欢迎词
2014/01/15 职场文书
课外活动总结
2015/02/04 职场文书
2015年爱牙日活动总结
2015/03/23 职场文书
公司保洁员管理制度
2015/08/04 职场文书
GoFrame gredis缓存DoVar Conn连接对象 自动序列化GoFrame gredisDo/DoVar方法Conn连接对象自动序列化/反序列化总结
2022/06/14 Golang