一个基于PDO的数据库操作类(新) 一个PDO事务实例


Posted in PHP onJuly 03, 2011
<?php 
/* 
* 作者:胡睿 
* 日期:2011/03/19 
* 电邮:hooray0905@foxmail.com 
* 
* 20110319 
* 常用数据库操作,如:增删改查,获取单条记录、多条记录,返回最新一条插入记录id,返回操作记录行数等 
* 20110630 
* 整体修改方法,合并部分参数 
* 规范代码,一个方法里只有1个return语句 
*/ 
/* 
参数说明 
int $debug 是否开启调试,开启则输出sql语句 
int $mode 0 返回数组 
1 返回单条记录 
2 返回行数 
string $table 数据库表 
string $fields 需要查询的数据库字段,允许为空,默认为查找全部 
string $sqlwhere 查询条件,允许为空 
string $orderby 排序,允许为空,默认为id倒序 
*/ 
function hrSelect($debug, $mode, $table, $fields="*", $sqlwhere="", $orderby="id desc"){ 
global $pdo; 
if($debug){ 
if($mode == 2){ 
echo "select count(*) from $table where 1=1 $sqlwhere order by $orderby"; 
}elseif($mode == 1){ 
echo "select $fields from $table where 1=1 $sqlwhere"; 
}else{ 
echo "select $fields from $table where 1=1 $sqlwhere order by $orderby"; 
} 
exit; 
}else{ 
if($mode == 2){ 
$rs = $pdo->query("select count(*) from $table where 1=1 $sqlwhere order by $orderby"); 
$return = $rs->fetchColumn(); 
}elseif($mode == 1){ 
$rs = $pdo->query("select $fields from $table where 1=1 $sqlwhere"); 
$return = $rs->fetch(); 
}else{ 
$rs = $pdo->query("select $fields from $table where 1=1 $sqlwhere order by $orderby"); 
$return = $rs->fetchAll(); 
} 
return $return; 
} 
} 
/* 
参数说明 
int $debug 是否开启调试,开启则输出sql语句 
int $mode 0 默认insert,无返回信息 
1 返回执行条目数 
2 返回最后一次插入记录的id 
string $table 数据库表 
string $fields 需要插入数据库的字段 
string $values 需要插入数据库的信息,必须与$fields一一对应 
*/ 
function hrInsert($debug, $mode, $table, $fields, $values){ 
global $pdo; 
if($debug){ 
echo "insert into $table ($fields) values ($values)"; 
exit; 
}else{ 
if($mode == 2){ 
$return = $pdo->lastInsertId("insert into $table ($fields) values ($values)"); 
}elseif($mode == 1){ 
$return = $pdo->exec("insert into $table ($fields) values ($values)"); 
}else{ 
$pdo->query("insert into $table ($fields) values ($values)"); 
exit; 
} 
return $return; 
} 
} 
/* 
参数说明 
int $debug 是否开启调试,开启则输出sql语句 
int $mode 0 默认update,无返回信息 
1 返回执行条目数 
string $table 数据库表 
string $set 需要更新的字段及内容,格式:a='abc',b=2,c='2010-10-10 10:10:10' 
string $sqlwhere 修改条件,允许为空 
*/ 
function hrUpdate($debug, $mode, $table, $set, $sqlwhere=""){ 
global $pdo; 
if($debug){ 
echo "update $table set $set where 1=1 $sqlwhere"; 
exit; 
}else{ 
if($mode==1){ 
$return = $pdo->exec("update $table set $set where 1=1 $sqlwhere"); 
}else{ 
$pdo->query("update $table set $set where 1=1 $sqlwhere"); 
exit; 
} 
return $return; 
} 
} 
/* 
参数说明 
int $debug 是否开启调试,开启则输出sql语句 
int $mode 0 默认delete,无返回信息 
1 返回执行条目数 
string $table 数据库表 
string $sqlwhere 删除条件,允许为空 
*/ 
function hrDelete($debug, $mode, $table, $sqlwhere=""){ 
global $pdo; 
if($debug){ 
echo "delete from $table where 1=1 $sqlwhere"; 
exit; 
}else{ 
if($mode == 1){ 
$return = $pdo->exec("delete from $table where 1=1 $sqlwhere"); 
}else{ 
$pdo->query("delete from $table where 1=1 $sqlwhere"); 
exit; 
} 
return $return; 
} 
} 
?>

另外一段代码是基于我这个数据库操作类的事务实例:
/* 
注意,数据库操作表类型必须为InnoDB,其他类型不支持事务 
PDO事务机制 
$pdo->beginTransaction(); --开启事务 
$pdo->commit(); --结束事务 
$pdo->rollBack(); --回滚操作 示例,用try/catch包住db操作,当事务内的db操作出现中断,则执行回滚并抛出异常信息。 
*/ 
try{ 
$pdo->beginTransaction(); 
hrInsert(0,1,"class","name,parentid","'god',0"); //可以正常执行 
hrInsert(0,0,0,"tb_searchlog","userid,code","4"); //出错 
$pdo->commit(); 
}catch(Exception $e){ 
$pdo->rollBack(); 
echo "Failed: " . $e->getMessage(); 
}

代码下载:点击下载
PHP 相关文章推荐
使用 eAccelerator加速PHP代码的方法
Sep 30 PHP
PHP cron中的批处理
Sep 16 PHP
UTF8编码内的繁简转换的PHP类
Jul 09 PHP
PHP开发环境配置(MySQL数据库安装图文教程)
Apr 28 PHP
深入理解ob_flush和flush的区别(ob_flush()与flush()使用方法)
Feb 06 PHP
php中文验证码实现示例分享
Jan 12 PHP
php的ZipArchive类用法实例
Oct 20 PHP
PHP 设计模式系列之 specification规格模式
Jan 10 PHP
PHP GD库相关图像生成和处理函数小结
Sep 30 PHP
php微信公众平台交互与接口详解
Nov 28 PHP
Laravel框架查询构造器 CURD操作示例
Sep 04 PHP
thinkphp框架使用JWTtoken的方法详解
Oct 10 PHP
PHP array_multisort()函数的使用札记
Jul 03 #PHP
PHP导出MySQL数据到Excel文件(fputcsv)
Jul 03 #PHP
PHP include_path设置技巧分享
Jul 03 #PHP
php array_intersect比array_diff快(附详细的使用说明)
Jul 03 #PHP
php header Content-Type类型小结
Jul 03 #PHP
php中关于codeigniter的xmlrpc的类在进行数据交换时的类型问题
Jul 03 #PHP
PHP采集利器 Snoopy 试用心得
Jul 03 #PHP
You might like
php 取得瑞年与平年的天数的代码
2009/08/10 PHP
php 判断是否是中文/英文/数字示例代码
2013/09/30 PHP
PHP中list()函数用法实例简析
2016/01/08 PHP
PHP巧妙利用位运算实现网站权限管理的方法
2017/03/12 PHP
PHP关键特性之命名空间实例详解
2017/05/06 PHP
Yii框架Session与Cookie使用方法示例
2019/10/14 PHP
PHP开发api接口安全验证操作实例详解
2020/03/26 PHP
可以用来调试JavaScript错误的解决方案
2010/08/07 Javascript
常用的jQuery前端技巧收集
2014/12/24 Javascript
JS仿淘宝实现的简单滑动门效果代码
2015/10/14 Javascript
jQuery加密密码到cookie的实现代码
2017/04/18 jQuery
Angular.js中window.onload(),$(document).ready()的写法浅析
2017/09/28 Javascript
微信小程序promsie.all和promise顺序执行
2017/10/27 Javascript
解决vue中使用swiper插件问题及swiper在vue中的用法
2018/04/04 Javascript
微信小程序数据分析之自定义分析的实现
2018/08/17 Javascript
js根据json数据中的某一个属性来给数据分组的方法
2018/10/08 Javascript
微信小程序 腾讯地图显示偏差问题解决
2019/07/27 Javascript
在layui tab控件中载入外部html页面的方法
2019/09/04 Javascript
JS常用正则表达式超全集(密码强度校验,金额校验,IE版本,IPv4,IPv6校验)
2020/02/03 Javascript
vue实现移动端input上传视频、音频
2020/08/18 Javascript
Python字符串处理之count()方法的使用
2015/05/18 Python
老生常谈python之鸭子类和多态
2017/06/13 Python
Python3 中把txt数据文件读入到矩阵中的方法
2018/04/27 Python
Linux下python3.6.1环境配置教程
2018/09/26 Python
使用python Telnet远程登录执行程序的方法
2019/01/26 Python
Python3.5基础之NumPy模块的使用图文与实例详解
2019/04/24 Python
python 字典 setdefault()和get()方法比较详解
2019/08/07 Python
python 并发下载器实现方法示例
2019/11/22 Python
Python 整行读取文本方法并去掉readlines换行\n操作
2020/09/03 Python
pycharm + django跨域无提示的解决方法
2020/12/06 Python
详解python第三方库的安装、PyInstaller库、random库
2021/03/03 Python
HTML5中的新元素介绍
2008/10/17 HTML / CSS
施工单位安全责任书
2014/07/24 职场文书
2014年学校禁毒工作总结
2014/12/23 职场文书
平凡的世界读书笔记
2015/06/25 职场文书
客户答谢会致辞
2015/07/30 职场文书