一个基于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 相关文章推荐
php 输出双引号&quot;与单引号'的方法
May 09 PHP
php中常用字符串处理代码片段整理
Nov 07 PHP
PHP中通过HTTP_USER_AGENT判断是否为手机移动终端的函数代码
Feb 14 PHP
php笔记之:有规律大文件的读取与写入的分析
Apr 26 PHP
php异常处理使用示例
Feb 25 PHP
PHP连接MySQL的2种方法小结以及防止乱码
Mar 11 PHP
PHP实现指定字段的多维数组排序函数分享
Mar 09 PHP
PHP实现QQ登录实例代码
Jan 14 PHP
PHP异常处理定义与使用方法分析
Jul 25 PHP
浅谈Laravel中的一个后期静态绑定
Aug 11 PHP
Laravel框架分页实现方法分析
Jun 12 PHP
is_file和file_exists效率比较
Mar 14 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
Terran建筑一览
2020/03/14 星际争霸
PHP 柱状图实现代码
2009/12/04 PHP
php通用防注入程序 推荐
2011/02/26 PHP
提高PHP编程效率的方法
2013/11/07 PHP
PHP的pcntl多进程用法实例
2015/03/19 PHP
js cookies 常见网页木马挂马代码 24小时只加载一次
2009/04/13 Javascript
javascript多种数据类型表格排序代码分析
2010/09/11 Javascript
functional继承模式 摘自javascript:the good parts
2011/06/20 Javascript
基于jquery的文章中所有图片width大小批量设置方法
2013/08/01 Javascript
js 自定义个性下拉选择框示例
2013/08/20 Javascript
Ext JS 4实现带week(星期)的日期选择控件(实战二)
2013/08/21 Javascript
JS.getTextContent(element,preformatted)使用介绍
2013/09/21 Javascript
Jquery插件easyUi表单验证提交(示例代码)
2013/12/30 Javascript
JS前端加密算法示例
2016/12/22 Javascript
详解Vue2 SSR 缓存 Api 数据
2017/11/20 Javascript
vue.js-div滚动条隐藏但有滚动效果的实现方法
2018/03/03 Javascript
React Native基础入门之初步使用Flexbox布局
2018/07/02 Javascript
简述JS控制台的使用
2018/07/15 Javascript
浅谈webpack devtool里的7种SourceMap模式
2019/01/14 Javascript
Python操作MongoDB数据库PyMongo库使用方法
2015/04/27 Python
PyQt5实现QLineEdit添加clicked信号的方法
2019/06/25 Python
python代码编写计算器小程序
2020/03/30 Python
Python socket非阻塞模块应用示例
2019/09/12 Python
python mock测试的示例
2020/10/19 Python
python opencv图像处理(素描、怀旧、光照、流年、滤镜 原理及实现)
2020/12/10 Python
BONIA官方网站:国际奢侈品牌和皮革专家
2016/11/27 全球购物
香蕉共和国工厂店:Banana Republic Factory
2018/06/09 全球购物
Java里面有没有全局变量?为什么?
2015/02/06 面试题
医药工作者的求职信范文
2013/09/21 职场文书
拓展培训心得体会
2014/01/04 职场文书
测控技术自荐信
2014/06/05 职场文书
员工试用期自我鉴定范文
2014/09/15 职场文书
个人四风问题对照检查材料
2014/10/01 职场文书
2015政治思想表现评语
2015/03/25 职场文书
《吃水不忘挖井人》教学反思
2016/02/22 职场文书
教你用python控制安卓手机
2021/05/13 Python