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 相关文章推荐
Apache设置虚拟WEB
Oct 09 PHP
adodb与adodb_lite之比较
Dec 31 PHP
php 缓存函数代码
Aug 27 PHP
自动把纯文本转换成Web页面的php代码
Aug 27 PHP
vs中通过剪切板循环来循环粘贴不同内容
Apr 30 PHP
typecho插件编写教程(一):Hello World
May 28 PHP
php实现的网络相册图片防盗链完美破解方法
Jul 01 PHP
ThinkPHP5实现作业管理系统中处理学生未交作业与已交作业信息的方法
Nov 12 PHP
PDO::query讲解
Jan 29 PHP
php实现根据身份证获取精准年龄
Feb 26 PHP
PHP实现简单日历类编写
Aug 28 PHP
如何重写Laravel异常处理类详解
Dec 20 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
一个域名查询的程序
2006/10/09 PHP
php中变量及部分适用方法
2008/03/27 PHP
php防攻击代码升级版
2010/12/29 PHP
PHP IF ELSE简化/三元一次式的使用
2011/08/22 PHP
解析php函数method_exists()与is_callable()的区别
2013/06/21 PHP
php实现异步将远程链接上内容(图片或内容)写到本地的方法
2016/11/30 PHP
PHP 命名空间和自动加载原理与用法实例分析
2020/04/29 PHP
使用jQuery时Form表单元素ID和name命名大忌
2014/03/06 Javascript
一行命令搞定node.js 版本升级
2014/07/20 Javascript
JS 排序输出实现table行号自增前端动态生成的tr
2014/08/13 Javascript
Javascript设计模式理论与编程实战之简单工厂模式
2015/11/03 Javascript
js如何判断输入字符串长度
2015/12/16 Javascript
webpack多页面开发实践
2017/12/18 Javascript
node puppeteer(headless chrome)实现网站登录
2018/05/09 Javascript
python测试驱动开发实例
2014/10/08 Python
Python3中的列表,元组,字典,字符串相关知识小结
2017/11/10 Python
Django 登陆验证码和中间件的实现
2018/08/17 Python
idea创建springMVC框架和配置小文件的教程图解
2018/09/18 Python
Python实现的爬取百度文库功能示例
2019/02/16 Python
Django获取该数据的上一条和下一条方法
2019/08/12 Python
使用PyTorch将文件夹下的图片分为训练集和验证集实例
2020/01/08 Python
tensorflow使用range_input_producer多线程读取数据实例
2020/01/20 Python
如何用python 操作zookeeper
2020/12/28 Python
美体小铺加拿大官方网站:The Body Shop加拿大
2016/10/30 全球购物
大学本科生的个人自我评价
2013/12/09 职场文书
金融专业大学生职业生涯规划范文
2014/01/16 职场文书
2014年基层党组织公开承诺书
2014/03/29 职场文书
中秋手机店促销方案
2014/06/16 职场文书
爱的教育观后感
2015/06/17 职场文书
搞笑的婚礼主持词
2015/06/29 职场文书
公共场所卫生管理制度
2015/08/05 职场文书
如何写好开幕词?
2019/06/24 职场文书
漫画《催眠麦克风-Dawn Of Divisions》第二卷PV公开
2022/04/05 日漫
ConditionalOnProperty配置swagger不生效问题及解决
2022/06/14 Java/Android
mysql通过group by分组取最大时间对应数据的两种有效方法
2022/09/23 MySQL
CSS使用SVG实现动态分布的圆环发散路径动画
2022/12/24 HTML / CSS