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 5昨天隆重推出--PHP 5/Zend Engine 2.0新特性
Oct 09 PHP
PHP文件下载类
Dec 06 PHP
实用函数4
Nov 08 PHP
PHP中Date获取时间不正确怎么办
Jun 05 PHP
PHP对象转换为数组函数(递归方法)
Feb 04 PHP
php和js如何通过json互相传递数据相关问题探讨
Feb 26 PHP
PHP 验证码不显示只有一个小红叉的解决方法
Sep 30 PHP
PHP+shell脚本操作Memcached和Apache Status的实例分享
Mar 11 PHP
php 在字符串指定位置插入新字符的简单实现
Jun 28 PHP
thinkphp跨库操作的简单代码实例
Sep 22 PHP
Laravel5.0+框架邮件发送功能实现方法图文与实例详解
Apr 23 PHP
Laravel Eloquent ORM 多条件查询的例子
Oct 10 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生成静态HTML文档的原理
2012/10/29 PHP
如何让CI框架支持service层
2014/10/29 PHP
Linux系统下使用XHProf和XHGui分析PHP运行性能
2015/12/08 PHP
jquery插件开发方法(初学者)
2012/02/03 Javascript
javascript倒计时功能实现代码
2012/06/07 Javascript
Google Map V3 绑定气泡窗口(infowindow)Dom事件实现代码
2013/04/26 Javascript
JavaScript实现获取dom中class的方法
2015/02/09 Javascript
nodejs调用cmd命令实现复制目录
2015/05/04 NodeJs
详解AngularJS中的作用域
2015/06/17 Javascript
jQuery满屏焦点图左右滚动特效代码分享
2015/09/07 Javascript
JavaScript中this的9种应用场景及三种复合应用场景
2015/09/12 Javascript
js仿iphone秒表功能 计算平均数
2017/01/11 Javascript
详解Vue-Cli 异步加载数据的一些注意点
2017/08/12 Javascript
详解微信小程序scroll-view横向滚动的实践踩坑及隐藏其滚动条的实现
2019/03/14 Javascript
vue移动端使用canvas签名的实现
2020/01/15 Javascript
python远程登录代码
2008/04/29 Python
用python与文件进行交互的方法
2018/03/01 Python
选择python进行数据分析的理由和优势
2019/06/25 Python
Python中list的交、并、差集获取方法示例
2019/08/01 Python
python logging日志模块原理及操作解析
2019/10/12 Python
Django 项目通过加载不同env文件来区分不同环境
2020/02/17 Python
python mock测试的示例
2020/10/19 Python
CSS3中使用RGBA设置透明度的示例
2015/08/04 HTML / CSS
CSS3 二级导航菜单的制作的示例
2018/04/02 HTML / CSS
MANGO官方网站:西班牙芒果服装品牌
2017/01/15 全球购物
PREMIUM-MALL法国:行李、箱包及配件在线
2019/05/30 全球购物
美国名牌香水折扣网站:Hottperfume
2021/02/10 全球购物
高中考试作弊检讨书
2014/01/14 职场文书
室内设计专业自荐信
2014/05/31 职场文书
服务口号大全
2014/06/11 职场文书
企业贷款委托书格式
2014/09/12 职场文书
优秀英文求职信范文
2015/03/19 职场文书
质量承诺书格式范文
2015/04/28 职场文书
商业计划书范文
2019/04/24 职场文书
Vue项目打包、合并及压缩优化网页响应速度
2021/07/07 Vue.js
DE1103使用报告
2022/04/05 无线电