一个基于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 相关文章推荐
利用static实现表格的颜色隔行显示的代码
Sep 02 PHP
如何使用PHP实现javascript的escape和unescape函数
Jun 29 PHP
codeigniter教程之上传视频并使用ffmpeg转flv示例
Feb 13 PHP
php中使用getimagesize获取图片、flash等文件的尺寸信息实例
Apr 29 PHP
PHP使用Session遇到的一个Permission denied Notice解决办法
Jul 30 PHP
php实现refresh刷新页面批量导入数据的方法
Dec 23 PHP
php curl中gzip的压缩性能测试实例分析
Nov 08 PHP
老生常谈php 正则中的i,m,s,x,e分别表示什么
Mar 02 PHP
PHP中in_array的隐式转换的解决方法
Mar 06 PHP
phpstudy2018升级MySQL5.5为5.7教程(图文)
Oct 24 PHP
Thinkphp5 如何隐藏入口文件index.php(URL重写)
Oct 16 PHP
laravel5.6实现数值转换
Oct 23 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
解析使用substr截取UTF-8中文字符串出现乱码的问题
2013/06/20 PHP
检查用户名是否已在mysql中存在的php写法
2014/01/20 PHP
PHP内核探索:变量存储与类型使用说明
2014/01/30 PHP
微信公众号开发之微信公共平台消息回复类实例
2014/11/14 PHP
php实现随机显示图片方法汇总
2015/05/21 PHP
作为PHP程序员你要知道的另外一种日志
2018/07/30 PHP
laravel框架上传图片实现实时预览功能
2019/10/14 PHP
cnblogs中在闪存中屏蔽某人的实现代码
2010/11/14 Javascript
js onload事件不起作用示例分析
2013/10/09 Javascript
Javascript实现的常用算法(如冒泡、快速、鸽巢、奇偶等)
2014/04/29 Javascript
javascript 中that的含义示例介绍
2014/05/14 Javascript
JavaScript实现把数字转换成中文
2015/06/29 Javascript
微信小程序 wx:key详细介绍
2016/10/28 Javascript
jQuery实现CheckBox全选、全不选功能
2017/01/11 Javascript
Angular2 自定义validators的实现方法
2017/07/05 Javascript
详解升级react-router 4 踩坑指南
2017/08/14 Javascript
JavaScript贪吃蛇小组件实例代码
2017/08/20 Javascript
weex slider实现滑动底部导航功能
2017/08/28 Javascript
JS+Canvas绘制动态时钟效果
2017/11/10 Javascript
微信小程序开发常见问题及解决方案
2019/07/11 Javascript
对python中return和print的一些理解
2017/08/18 Python
Django读取Mysql数据并显示在前端的实例
2018/05/27 Python
python正则表达式匹配不包含某几个字符的字符串方法
2019/07/23 Python
Python 将 QQ 好友头像生成祝福语的实现代码
2020/05/03 Python
python中os包的用法
2020/06/01 Python
python属于哪种语言
2020/08/16 Python
详解移动端Html5页面中1px边框的几种解决方法
2018/07/24 HTML / CSS
2014年五四青年节活动策划书
2014/04/22 职场文书
廉洁自律演讲稿
2014/05/22 职场文书
安全在我心中演讲稿
2014/09/01 职场文书
销售人员工作自我评价
2014/09/21 职场文书
2015年医院护理部工作总结
2015/04/23 职场文书
幼儿园见习总结
2015/06/23 职场文书
HTML5 新增内容和 API详解
2021/11/17 HTML / CSS
Nginx下SSL证书安装部署步骤介绍
2021/12/06 Servers
Python OpenCV形态学运算示例详解
2022/04/07 Python