PHP封装的PDO数据库操作类实例
作者:北京流浪儿 发布时间:2023-11-18 04:54:31
标签:PHP,PDO,数据库
本文实例讲述了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程序设计有所帮助。


猜你喜欢
- AJAX初体验之上手篇AJAX是这两年蛮热的东西,我也凑凑热闹,前些天去找了些教程学学,下面就按整个处理过程把自己学的东西写写,不过,因为是
- JavaScript中的标识符的命名有以下规则:由字母、数字、$、_组成以字母、$、_开头不可以使用保留字!!!要有意义!!!!!!!标识符
- 设置某个字段的值自增由于某个业务需要手动操作数据库,并设置主键ID不重复。做个记录set @rownum=0;select a.id, @r
- 注意,在改变数值之前锁定应用,确保一段时间里只有一个客户执行该语句。<SCRIPT LANGUAGE="VBScr
- 1、HTML部分<Col span="2">上传文件:</Col><Col span=&q
- 由于画图时plt.title()默认是显示英文,如果我们设置标题为中文,会无法显示,如图:在最前边设置这两条属性即可:plt.rcParam
- 1、mysql下载下载地址:https://dev.mysql.com/downloads/mysql/5.6.html<br>
- 本文实例讲述了Python实现的插入排序,冒泡排序,快速排序,选择排序算法。分享给大家供大家参考,具体如下:#!/usr/bin/pytho
- 初学python,抓取搜狗微信公众号文章存入mysqlmysql表:代码:import requestsimport jsonimport
- 跨域当我们遇到请求后台接口遇到 Access-Control-Allow-Origin 时,那说明跨域了。跨域是因为浏览器的同源策略所导致,
- 本文实例讲述了python使用自定义user-agent抓取网页的方法。分享给大家供大家参考。具体如下:下面python代码通过urllib
- 记忆力差的孩子得勤做笔记!刚接触python,最近又需要画一个三维图,然后就找了一大堆资料,看的人头昏脑胀的,今天终于解决了!好了,废话不多
- 本文仅作为基本操作流程的记录,不进行细节描述一、环境安装1、安装Pycharm在官网上下载最新版本Pycharm安装即可2、安装pyQT5p
- 今天没事回家写了个贴吧图片下载程序,工具用的是PyCharm,这个工具很实用,开始用的Eclipse,但是再使用类库或者其它方便并不实用,所
- 原文地址:30 Days of Mootools 1.2 Tutorials - Day 22 - Fx.Elements通过
- 问:怎样解决MySQL 5.0.16的乱码问题?答:MySQL 5.0.16的乱码问题可以用下面的方法解决:1.设置phpMyAdminLa
- 先给大家巩固tempdb的基础知识简介:tempdb是SQLServer的系统数据库一直都是SQLServer的重要组成部分,用来存储临时对
- 微信小程序 scroll-view实现上拉加载与下拉刷新的实例实现效果图:如图,使用小程序的scroll-view实现的上拉加载数据,下拉刷
- Click 是用 Python 写的一个第三方模块,用于快速创建命令行。我们知道,Python 内置了一个 Argparse 的标准库用于创
- 前言因为Python的水平目前一直是处于能用阶段,平时写的脚本使用的Python的写法也比较的简单,没有写过稍微大一点的项目。对Python