一个基于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 相关文章推荐
PHP5中使用DOM控制XML实现代码
May 07 PHP
php并发对MYSQL造成压力的解决方法
Feb 21 PHP
PHP代码审核的详细介绍
Jun 13 PHP
PHP 提取图片img标记中的任意属性的简单实例
Dec 10 PHP
PHP访问数据库集群的方法小结
Mar 14 PHP
Zend Framework教程之资源(Resources)用法实例详解
Mar 14 PHP
yii2缓存Caching基本用法示例
Jul 18 PHP
php reset() 函数指针指向数组中的第一个元素并输出实例代码
Nov 21 PHP
PHP登录(ajax提交数据和后台校验)实例分享
Dec 29 PHP
PHP 断点续传实例详解
Nov 11 PHP
thinkPHP3.2使用RBAC实现权限管理的实现
Aug 27 PHP
PHP读取Excel内的图片(phpspreadsheet和PHPExcel扩展库)
Nov 19 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访问数据库集群的方法小结
2016/03/14 PHP
PHP从尾到头打印链表实例讲解
2018/09/27 PHP
JavaScript 构造函数 面相对象学习必备知识
2010/06/09 Javascript
jquery制作搜狐快站页面效果示例分享
2014/02/21 Javascript
js函数名与form表单元素同名冲突的问题
2014/03/07 Javascript
JQuery zClip插件实现复制页面内容到剪贴板
2015/11/02 Javascript
Select2.js下拉框使用小结
2016/10/24 Javascript
JS变量及其作用域
2017/03/29 Javascript
Node.js中的require.resolve方法使用简介
2017/04/23 Javascript
浅谈Node.js 子进程与应用场景
2018/01/24 Javascript
Angular HMR(热模块替换)功能实现方法
2018/04/04 Javascript
Vue模拟数据,实现路由进入商品详情页面的示例
2018/08/31 Javascript
vue自定义表单生成器form-create使用详解
2019/07/19 Javascript
Postman内建变量常用方法实例解析
2020/07/28 Javascript
Python列表(list)常用操作方法小结
2015/02/02 Python
Python实现获取操作系统版本信息方法
2015/04/08 Python
python输出当前目录下index.html文件路径的方法
2015/04/28 Python
使用Python的Twisted框架编写非阻塞程序的代码示例
2016/05/25 Python
使用django-guardian实现django-admin的行级权限控制的方法
2018/10/30 Python
pygame游戏之旅 游戏中添加显示文字
2018/11/20 Python
python画图把时间作为横坐标的方法
2019/07/07 Python
python删除列表元素的三种方法(remove,pop,del)
2019/07/22 Python
Python获取当前脚本文件夹(Script)的绝对路径方法代码
2019/08/27 Python
python 图片二值化处理(处理后为纯黑白的图片)
2019/11/01 Python
Python爬虫实现HTTP网络请求多种实现方式
2020/06/19 Python
python 获取域名到期时间的方法步骤
2021/02/10 Python
使用javascript和HTML5 Canvas画的四渐变色播放按钮效果
2014/04/10 HTML / CSS
详解HTML5中表单验证的8种方法介绍
2016/12/19 HTML / CSS
印度最大的酒店品牌网络:OYO Rooms
2016/07/24 全球购物
Expedia挪威官网:酒店、机票和租车
2018/03/03 全球购物
澳大利亚床上用品、浴巾和家居用品购物网站:Bambury
2020/04/16 全球购物
学习经验交流会主持词
2014/04/01 职场文书
学生自我评语大全
2014/04/18 职场文书
大学体育课感想
2015/08/10 职场文书
PHP使用QR Code生成二维码实例
2021/07/07 PHP
nginx sticky实现基于cookie负载均衡示例详解
2022/12/24 Servers