一个基于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语法(4)
Oct 09 PHP
晋城吧对DiscuzX进行的前端优化要点
Sep 05 PHP
php fsockopen中多线程问题的解决办法[翻译]
Nov 09 PHP
php session_start()出错原因分析及解决方法
Oct 28 PHP
PHP实现微信公众平台音乐点播
Mar 20 PHP
php中in_array函数用法探究
Nov 25 PHP
php中随机函数mt_rand()与rand()性能对比分析
Dec 01 PHP
PHP技术开发微信公众平台
Jul 22 PHP
Yii2创建表单(ActiveForm)方法详解
Jul 23 PHP
PHP获取中国时间(上海时区时间)及美国时间的方法
Feb 23 PHP
PHP自动补全表单的两种方法
Mar 06 PHP
php实现的支付宝网页支付功能示例【基于TP5框架】
Sep 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
小偷PHP+Html+缓存
2006/12/20 PHP
如何在php中正确的使用json
2013/08/06 PHP
PHP封装的一个支持HTML、JS、PHP重定向的多功能跳转函数
2014/06/19 PHP
typecho插件编写教程(四):插件挂载
2015/05/28 PHP
Yii框架实现邮箱激活的方法【数字签名】
2016/10/18 PHP
用javascript将数据库中的TEXT类型数据动态赋值到TEXTAREA中
2007/04/20 Javascript
基于jquery的修改当前TAB显示标题的代码
2010/12/11 Javascript
windows系统下简单nodejs安装及环境配置
2013/01/08 NodeJs
jquery js 重置表单 reset()具体实现代码
2013/08/05 Javascript
avalon js实现仿google plus图片多张拖动排序附源码下载
2015/09/24 Javascript
Knockout自定义绑定创建方法
2015/12/26 Javascript
JQuery解析XML数据的几个简单实例
2016/05/18 Javascript
jquery广告无缝轮播实例
2017/01/05 Javascript
angular实现商品筛选功能
2017/02/01 Javascript
微信小程序 wx.login解密出现乱码的问题解决办法
2017/03/10 Javascript
微信小程序学习之数据处理详解
2017/07/05 Javascript
JS实现的集合去重,交集,并集,差集功能示例
2018/03/13 Javascript
jQuery中复合选择器简单用法示例
2018/03/31 jQuery
bootstrap table列和表头对不齐的解决方法
2019/07/19 Javascript
js实现GIF图片的分解和合成
2019/10/24 Javascript
vue实现短信验证码登录功能(流程详解)
2019/12/10 Javascript
JS代码优化的8点建议
2020/02/04 Javascript
JS实现电脑虚拟键盘打字测试
2020/06/24 Javascript
[01:01:04]2018DOTA2亚洲邀请赛 4.5 淘汰赛 OpTic vs TNC 第一场
2018/04/06 DOTA
Linux下编译安装MySQL-Python教程
2015/02/02 Python
Python list操作用法总结
2015/11/10 Python
Python生成个性签名图片获取GUI过程解析
2019/12/16 Python
Python log模块logging记录打印用法解析
2020/01/20 Python
python在CMD界面读取excel所有数据的示例
2020/09/28 Python
html5+css3之CSS中的布局与Header的实现
2014/11/21 HTML / CSS
中国领先的专业演出票务网:永乐票务
2016/08/29 全球购物
String和StringBuffer的区别
2015/08/13 面试题
教师开学感言
2014/02/14 职场文书
消防志愿者活动方案
2014/08/23 职场文书
学校运动会广播稿范文
2014/10/02 职场文书
Nginx工作原理和优化总结。
2021/04/02 Servers