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中设置、使用、删除Cookie的解决方法
May 06 PHP
PHP5全版本绕过open_basedir读文件脚本漏洞详细介绍
Jan 20 PHP
PHP动态输出JavaScript代码实例
Feb 12 PHP
PHP递归创建多级目录
Nov 05 PHP
PHP安全下载文件的方法
Apr 07 PHP
thinkphp在php7环境下提示Cannot use ‘String’ as class name as it is reserved的解决方法
Sep 30 PHP
php函数mkdir实现递归创建层级目录
Oct 27 PHP
php redis实现对200w用户的即时推送
Mar 04 PHP
php实现微信模拟登陆、获取用户列表及群发消息功能示例
Jun 28 PHP
Windows平台实现PHP连接SQL Server2008的方法
Jul 26 PHP
PHP递归算法的简单实例
Feb 28 PHP
laravel unique验证、确认密码confirmed验证以及密码修改验证的方法
Oct 16 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 set_time_limit(0)长连接的实现分析
2010/03/02 PHP
php设计模式  Command(命令模式)
2011/06/17 PHP
php中{}大括号是什么意思
2013/12/01 PHP
[原创]PHP实现SQL语句格式化功能的方法
2017/07/28 PHP
phpQuery采集网页实现代码实例
2020/04/02 PHP
发两个小东西,ASP/PHP 学习工具。 用JavaScript写的
2007/04/12 Javascript
Mootools 1.2教程 滚动条(Slider)
2009/09/15 Javascript
Js组件的一些写法
2010/09/10 Javascript
JavaScript面向对象(极简主义法minimalist approach)
2012/07/17 Javascript
javascript arguments使用示例
2014/12/16 Javascript
JavaScript中的对象序列化介绍
2014/12/30 Javascript
jQuery的bind()方法使用详解
2015/07/15 Javascript
18个非常棒的jQuery代码片段
2015/11/02 Javascript
JavaScript隐式类型转换
2016/03/15 Javascript
JavaScript面向对象分层思维全面解析
2016/11/22 Javascript
Vue拖拽组件开发实例详解
2018/05/11 Javascript
使用vue-router与v-if实现tab切换遇到的问题及解决方法
2018/09/07 Javascript
JS随机密码生成算法
2019/09/23 Javascript
解决Vue项目打包后打开index.html页面显示空白以及图片路径错误的问题
2019/10/25 Javascript
vue 使用 canvas 实现手写电子签名
2020/03/06 Javascript
JS浏览器BOM常见操作实例详解
2020/04/27 Javascript
Kettle中使用JavaScrip调用jar包对文件内容进行MD5加密的操作方法
2020/09/04 Javascript
[01:44]《为梦想出发》—联想杯DOTA2完美世界全国高校联赛
2015/09/30 DOTA
Django Highcharts制作图表
2016/08/27 Python
解决Python 遍历字典时删除元素报异常的问题
2016/09/11 Python
Python之列表的插入&amp;替换修改方法
2018/06/28 Python
Python qqbot 实现qq机器人的示例代码
2019/07/11 Python
Python使用sqlite3模块内置数据库
2020/05/07 Python
Python通过递归函数输出嵌套列表元素
2020/10/15 Python
俄罗斯品牌服装和鞋子在线商店:BRIONITY
2020/03/26 全球购物
在校大学生的职业生涯规划书
2014/03/14 职场文书
2014乡镇机关党员个人对照检查材料思想汇报
2014/10/09 职场文书
2014离婚协议书范文(3篇)
2014/11/29 职场文书
入党积极分子党支部意见
2015/06/02 职场文书
Python django中如何使用restful框架
2021/06/23 Python
一篇文章搞懂python混乱的切换操作与优雅的推导式
2021/08/23 Python