一个基于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执行速度全攻略(下)
Oct 09 PHP
基于mysql的论坛(1)
Oct 09 PHP
PHPMailer邮件类利用smtp.163.com发送邮件方法
Sep 11 PHP
PHP 图片上传代码
Sep 13 PHP
php数组函数序列之prev() - 移动数组内部指针到上一个元素的位置,并返回该元素值
Oct 31 PHP
微信公众平台网页授权获取用户基本信息中授权回调域名设置的变动
Oct 21 PHP
php实现根据词频生成tag云的方法
Apr 17 PHP
jQuery+Ajax+PHP“喜欢”评级功能实现代码
Oct 08 PHP
php简单实现短网址(短链)还原的方法(测试可用)
May 09 PHP
PHP简单实现欧拉函数Euler功能示例
Nov 06 PHP
WordPress伪静态规则设置代码实例
Dec 10 PHP
ThinkPHP6.0如何利用自定义验证规则规范的实现登陆
Dec 16 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
Laravel 5 框架入门(三)
2015/04/09 PHP
php判断访问IP的方法
2015/06/19 PHP
PHP函数nl2br()与自定义函数nl2p()换行用法分析
2016/04/02 PHP
PHP的PDO错误与错误处理
2019/01/27 PHP
Laravel5.1 框架响应基本用法实例分析
2020/01/04 PHP
JQuery的html(data)方法与&amp;lt;script&amp;gt;脚本块的解决方法
2010/03/09 Javascript
捕获浏览器关闭、刷新事件不同情况下的处理方法
2013/06/02 Javascript
jquery图片放大功能简单实现
2013/08/01 Javascript
完美兼容多浏览器的js判断图片路径代码汇总
2015/04/17 Javascript
js改变Iframe中Src的方法
2015/05/05 Javascript
利用jQuery.Validate异步验证用户名是否存在(推荐)
2016/12/09 Javascript
基于JavaScript实现选项卡效果
2017/07/21 Javascript
使用vue-cli+webpack搭建vue开发环境的方法
2017/12/22 Javascript
jQuery图片查看插件Magnify开发详解
2017/12/25 jQuery
vue使用自定义icon图标的方法
2018/05/14 Javascript
基于Vue实现可以拖拽的树形表格实例详解
2018/10/18 Javascript
Electron实现应用打包、自动升级过程解析
2020/07/07 Javascript
[04:28]DOTA2亚洲邀请赛小组赛第五日 TOP10精彩集锦
2015/02/03 DOTA
Python中使用logging模块代替print(logging简明指南)
2014/07/09 Python
python去除所有html标签的方法
2015/05/05 Python
python初学之用户登录的实现过程(实例讲解)
2017/12/23 Python
python-opencv 将连续图片写成视频格式的方法
2019/01/08 Python
解决python给列表里添加字典时被最后一个覆盖的问题
2019/01/21 Python
python对象与json相互转换的方法
2019/05/07 Python
python字典改变value值方法总结
2019/06/21 Python
Python TCP通信客户端服务端代码实例
2019/11/21 Python
django多种支付、并发订单处理实例代码
2019/12/13 Python
pycharm设置当前工作目录的操作(working directory)
2020/02/14 Python
Pytorch十九种损失函数的使用详解
2020/04/29 Python
英国日常交易网站:Wowcher
2018/09/04 全球购物
通息工程毕业生自荐信
2013/10/16 职场文书
化工专业应届生求职信
2013/11/08 职场文书
信息部岗位职责
2013/11/12 职场文书
房地产员工找工作的自我评价
2013/11/15 职场文书
我们的节日清明节活动方案
2014/03/05 职场文书
《烈火英雄》观后感:致敬和平时代的英雄
2019/11/11 职场文书