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 相关文章推荐
使用sockets:从新闻组中获取文章(三)
Oct 09 PHP
php 正则表达式小结
Aug 31 PHP
PHP的博客ping服务代码
Feb 04 PHP
PHP面向对象的进阶学习(抽像类、接口、final、类常量)
May 07 PHP
php生成随机密码自定义函数代码(简单快速)
May 10 PHP
PHP超牛逼无限极分类生成树方法
May 11 PHP
简单了解将WordPress中的工具栏移到底部的小技巧
Dec 31 PHP
PHP7下协程的实现方法详解
Dec 17 PHP
php获取手机端的号码以及ip地址实例代码
Sep 12 PHP
thinkphp5修改view到根目录实例方法
Jul 02 PHP
PHP设计模式之建造者模式(Builder)原理与用法案例详解
Dec 12 PHP
Laravel 手动开关 Eloquent 修改器的操作方法
Dec 30 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调用Oracle存储过程
2006/10/09 PHP
说明的比较细的php 正则学习实例
2008/07/30 PHP
jQuery 动画基础教程
2008/12/25 Javascript
js getElementsByTagName的简写方式
2010/06/27 Javascript
js/html光标定位的实现代码
2013/09/23 Javascript
js对象的复制继承实例
2015/01/10 Javascript
浅谈JavaScript正则表达式分组匹配
2015/04/10 Javascript
纯JavaScript 实现flappy bird小游戏实例代码
2016/09/27 Javascript
无阻塞加载js,防止因js加载不了影响页面显示的问题
2016/12/18 Javascript
nuxt框架中路由鉴权之Koa和Session的用法
2018/05/09 Javascript
详解vue-router 命名路由和命名视图
2018/06/01 Javascript
jQuery实现动态添加和删除input框代码实例
2019/03/29 jQuery
layui-table表复选框勾选的所有行数据获取的例子
2019/09/13 Javascript
JS实现音乐导航特效
2020/01/06 Javascript
[01:46]DOTA2上海特锦赛小组赛英文解说KotlGuy采访
2016/02/27 DOTA
Python编程中用close()方法关闭文件的教程
2015/05/24 Python
Flask之flask-script模块使用
2018/07/26 Python
Python3.5内置模块之os模块、sys模块、shutil模块用法实例分析
2019/04/27 Python
Python对接 xray 和微信实现自动告警
2019/09/17 Python
基于TensorBoard中graph模块图结构分析
2020/02/15 Python
Django查询优化及ajax编码格式原理解析
2020/03/25 Python
python脚本监控logstash进程并邮件告警实例
2020/04/28 Python
python属于软件吗
2020/06/18 Python
python程序需要编译吗
2020/06/19 Python
浅谈Python里面None True False之间的区别
2020/07/09 Python
Python 在函数上添加包装器
2020/07/28 Python
CSS3使用transition实现的鼠标悬停淡入淡出
2015/01/09 HTML / CSS
美国二手奢侈品寄售网站:TheRealReal
2016/10/29 全球购物
美国猫狗药物和用品网站:PetCareRx
2017/01/05 全球购物
顺丰快递Java软件工程师面试题
2015/07/31 面试题
中专毕业生自荐信范文
2013/11/28 职场文书
办公室文员工作自我评价
2013/12/01 职场文书
职工趣味运动会方案
2014/02/10 职场文书
四风问题个人对照检查剖析材料
2014/09/27 职场文书
“四风”查摆问题自我剖析材料
2014/09/27 职场文书
带你了解Java中的ForkJoin
2022/04/28 Java/Android