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调用mysql存储过程
Feb 14 PHP
php5中date()得出的时间为什么不是当前时间的解决方法
Jun 30 PHP
php 文章采集正则代码
Dec 28 PHP
php下使用iconv需要注意的问题
Nov 20 PHP
php使用sql数据库 获取字段问题介绍
Aug 12 PHP
CodeIgniter实现更改view文件夹路径的方法
Jul 04 PHP
PHP命令行脚本接收传入参数的三种方式
Aug 20 PHP
ThinkPHP3.2.3数据库设置新特性
Mar 05 PHP
PHP和MySql中32位和64位的整形范围是多少
Feb 18 PHP
Django中的cookie与session操作实例代码
Aug 17 PHP
PHP环形链表实现方法示例
Sep 15 PHP
Yii2框架自定义验证规则操作示例
Feb 08 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 删除cookie和浏览器重定向
2009/03/16 PHP
Laravel下生成验证码的类
2017/11/15 PHP
laravel框架如何设置公共头和公共尾
2019/10/22 PHP
Array.prototype 的泛型应用分析
2010/04/30 Javascript
return false,对阻止事件默认动作的一些测试代码
2010/11/17 Javascript
jQuery DOM操作实例
2014/03/05 Javascript
JQuery以JSON方式提交数据到服务端示例代码
2014/05/05 Javascript
用原生JS获取CLASS对象(很简单实用)
2014/10/15 Javascript
js动态切换图片的方法
2015/01/20 Javascript
jQuery动态星级评分效果实现方法
2015/08/06 Javascript
Avalon中文长字符截取、关键字符隐藏、自定义过滤器
2016/05/18 Javascript
AngularJS ngModel实现指令与输入直接的数据通信
2016/09/21 Javascript
详解jQuery lazyload 懒加载
2016/12/19 Javascript
AngularJS折叠菜单实现方法示例
2017/05/18 Javascript
获取当前按钮或者html的ID名称实例(推荐)
2017/06/23 Javascript
微信小程序实现同一页面取值的方法分析
2019/04/30 Javascript
JavaScript变量基本使用方法实例分析
2019/11/15 Javascript
原生javascript制作贪吃蛇小游戏的方法分析
2020/02/26 Javascript
python局域网ip扫描示例分享
2014/04/03 Python
python实现根据图标提取分类应用程序实例
2014/09/28 Python
python字典get()方法用法分析
2015/04/17 Python
python实现简单ftp客户端的方法
2015/06/28 Python
深入学习Python中的上下文管理器与else块
2017/08/27 Python
对python列表里的字典元素去重方法详解
2019/01/21 Python
pyqt5 实现工具栏文字图片同时显示
2019/06/13 Python
美国在线和移动免费会员制批发零售商:Boxed(移动端的Costco)
2020/01/02 全球购物
高中毕业自我鉴定
2013/12/16 职场文书
中学生爱国演讲稿
2013/12/31 职场文书
商务邀请函范文
2014/01/14 职场文书
收银员岗位职责
2014/02/07 职场文书
入党自荐书范文
2014/03/09 职场文书
出纳工作检讨书范文
2014/12/27 职场文书
大学生安全教育心得体会
2016/01/15 职场文书
六五普法学习心得体会
2016/01/21 职场文书
创业计划书之淘宝网店
2019/10/08 职场文书
Nginx+Tomcat实现负载均衡、动静分离的原理解析
2021/03/31 Servers