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网站安装程序制作的原理、步骤、注意事项和示例代码
Aug 01 PHP
php文件上传表单摘自drupal的代码
Feb 15 PHP
php页面函数设置超时限制的方法
Dec 01 PHP
php通过array_merge()函数合并关联和非关联数组的方法
Mar 18 PHP
PHP Streams(流)详细介绍及使用
May 12 PHP
PHP aes (ecb)解密后乱码问题
Jun 22 PHP
thinkPHP实现MemCache分布式缓存功能
Mar 23 PHP
thinkphp3.x中session方法的用法分析
May 20 PHP
Laravel中基于Artisan View扩展包创建及删除应用视图文件的方法
Oct 08 PHP
thinkPHP5框架设置404、403等http状态页面的方法
Jun 05 PHP
PHP中16个高危函数整理
Sep 19 PHP
php微信小程序解包过程实例详解
Mar 31 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
PHP4中实现动态代理
2006/10/09 PHP
模板引擎Smarty深入浅出介绍
2006/12/06 PHP
浅析虚拟主机服务器php fsockopen函数被禁用的解决办法
2013/08/07 PHP
javascript实现划词标记+划词搜索功能
2007/03/06 Javascript
Javascript 写的简单进度条控件
2008/01/22 Javascript
Javascript valueOf 使用方法
2008/12/28 Javascript
jQuery TextBox自动完成条
2009/07/22 Javascript
MooTools 1.2中的Drag.Move来实现拖放
2009/09/15 Javascript
基于jquery的页面划词搜索JS
2010/09/14 Javascript
jquery插件制作 图片走廊 gallery
2012/08/17 Javascript
javascript图像处理—仿射变换深度理解
2013/01/16 Javascript
解决Extjs4中form表单提交后无法进入success函数问题
2013/11/26 Javascript
jQuery实现的输入框选择时间插件用法实例
2015/02/28 Javascript
JavaScript获取当前日期是星期几的方法
2015/04/06 Javascript
Node.js的Mongodb使用实例
2016/12/30 Javascript
微信小程序之网络请求简单封装实例详解
2017/06/28 Javascript
javascript浏览器用户代理检测脚本实现方法
2017/10/27 Javascript
详解小程序缓存插件(mrc)
2018/08/17 Javascript
layui的表单验证支持ajax判断用户名是否重复的实例
2019/09/06 Javascript
关于JSON解析的实现过程解析
2019/10/08 Javascript
Python实现二分法算法实例
2015/02/02 Python
使用python获取csv文本的某行或某列数据的实例
2018/04/03 Python
python在每个字符后添加空格的实例
2018/05/07 Python
python使用__slots__让你的代码更加节省内存
2018/09/05 Python
浅谈Tensorflow 动态双向RNN的输出问题
2020/01/20 Python
python中turtle库的简单使用教程
2020/11/11 Python
中国最大的名表商城:万表网
2016/08/29 全球购物
家庭睡衣和家庭用品:Little Blue House
2018/03/18 全球购物
What's the difference between an interface and abstract class? (接口与抽象类有什么区别)
2012/10/29 面试题
汽车驾驶求职信
2013/10/25 职场文书
教师节促销活动方案
2014/02/14 职场文书
座谈会主持词
2014/03/20 职场文书
六年级学生评语
2014/04/22 职场文书
2015年酒店前台工作总结
2015/04/20 职场文书
sql时间段切分实现每隔x分钟出一份高速门架车流量
2022/02/28 SQL Server
阿里云服务器Ubuntu 20.04上安装Odoo 15
2022/05/20 Servers