一个基于PDO的数据库操作类


Posted in PHP onMarch 24, 2011

百度之后决定使用PDO,至于为什么选择PDO,这里就不再多说,大家自己去百度下就能明白。
既然要换,那最基本就需要有个常用的数据库操作类,也就是所谓的增删改查等,昨晚捣腾了一晚,大致弄出了个雏形,以下就是代码,希望大家能给出点意见。

<?php 
/* 
作者:胡睿 
日期:2011/03/19 
电邮:hooray0905@foxmail.com 
20110319 
常用数据库操作,如:增删改查,获取单条记录、多条记录,返回最新一条插入记录id,返回操作记录行数等 
*/ 
/* 
参数说明 
int $debug 是否开启调试,开启则输出sql语句 
int $getcount 是否记数,返回值为行数 
int $getrow 是否返回值单条记录 
string $table 数据库表 
string $fields 需要查询的数据库字段,允许为空,默认为查找全部 
string $sqlwhere 查询条件,允许为空 
string $orderby 排序,允许为空,默认为id倒序 
*/ 
function hrSelect($debug, $getcount, $getrow, $table, $fields="*", $sqlwhere="", $orderby="id desc"){ 
global $pdo; 
if($debug){ 
if($getcount){ 
echo "select count(*) from $table where 1=1 $sqlwhere order by $orderby"; 
}else{ 
echo "select $fields from $table where 1=1 $sqlwhere order by $orderby"; 
} 
exit; 
}else{ 
if($getcount){ 
$rs = $pdo->query("select count(*) from $table where 1=1 $sqlwhere order by $orderby"); 
return $rs->fetchColumn(); 
}elseif($getrow){ 
$rs = $pdo->query("select $fields from $table where 1=1 $sqlwhere order by $orderby"); 
return $rs->fetch(); 
}else{ 
$rs = $pdo->query("select $fields from $table where 1=1 $sqlwhere order by $orderby"); 
return $rs->fetchAll(); 
} 
} 
} 
/* 
参数说明 
int $debug 是否开启调试,开启则输出sql语句 
int $execrow 是否开启返回执行条目数 
int $lastinsertid 是否开启返回最后一条插入记录id 
string $table 数据库表 
string $fields 需要插入数据库的字段 
string $values 需要插入数据库的信息,必须与$fields一一对应 
*/ 
function hrInsert($debug, $execrow, $lastinsertid, $table, $fields, $values){ 
global $pdo; 
if($debug){ 
echo "insert into $table ($fields) values ($values)"; 
exit; 
}elseif($execrow){ 
return $pdo->exec("insert into $table ($fields) values ($values)"); 
}elseif($lastinsertid){ 
return $pdo->lastInsertId("insert into $table ($fields) values ($values)"); 
}else{ 
$pdo->query("insert into $table ($fields) values ($values)"); 
} 
} 
/* 
参数说明 
int $debug 是否开启调试,开启则输出sql语句 
int $execrow 是否开启执行并返回条目数 
string $table 数据库表 
string $set 需要更新的字段及内容,格式:a='abc',b=2,c='2010-10-10 10:10:10' 
string $sqlwhere 修改条件,允许为空 
*/ 
function hrUpdate($debug, $execrow, $table, $set, $sqlwhere=""){ 
global $pdo; 
if($debug){ 
echo "update $table set $set where 1=1 $sqlwhere"; 
exit; 
}elseif($execrow){ 
return $pdo->exec("update $table set $set where 1=1 $sqlwhere"); 
}else{ 
$pdo->query("update $table set $set where 1=1 $sqlwhere"); 
} 
} 
/* 
参数说明 
int $debug 是否开启调试,开启则输出sql语句 
int $execrow 是否开启返回执行条目数 
string $table 数据库表 
string $sqlwhere 删除条件,允许为空 
*/ 
function hrDelete($debug, $execrow, $table, $sqlwhere=""){ 
global $pdo; 
if($debug){ 
echo "delete from $table where 1=1 $sqlwhere"; 
exit; 
}elseif($execrow){ 
return $pdo->exec("delete from $table where 1=1 $sqlwhere"); 
}else{ 
$pdo->query("delete from $table where 1=1 $sqlwhere"); 
} 
} 
?>

参数的注释都写的很清楚,如果有人需要,不清楚使用方法可以直接问我。
PHP 相关文章推荐
支持oicq头像的留言簿(一)
Oct 09 PHP
PHP缓存技术的多种方法小结
Aug 14 PHP
php实现的CSS更新类实例
Sep 22 PHP
PHP封装的HttpClient类用法实例
Jun 17 PHP
yii使用activeFileField控件实现上传文件与图片的方法
Dec 28 PHP
PHP命令行执行整合pathinfo模拟定时任务实例
Aug 12 PHP
PHP中的密码加密的解决方案总结
Oct 26 PHP
关于PHP中字符串与多进制转换函数的实例代码
Nov 03 PHP
php利用gd库为图片添加水印
Nov 09 PHP
CI框架入门之MVC简单示例
Nov 21 PHP
JSON PHP中,Json字符串反序列化成对象/数组的方法
May 31 PHP
Laravel使用原生sql语句并调用的方法
Oct 09 PHP
Zend Studio (eclipse)使用速度优化方法
Mar 23 #PHP
常见的PHP五种设计模式小结
Mar 23 #PHP
PHP中MVC模式的模板引擎开发经验分享
Mar 23 #PHP
PHP面向接口编程 耦合设计模式 简单范例
Mar 23 #PHP
PHP中用接口、抽象类、普通基类实现“面向接口编程”与“耦合方法”简述
Mar 23 #PHP
php中取得URL的根域名的代码
Mar 23 #PHP
PHP+JS+rsa数据加密传输实现代码
Mar 23 #PHP
You might like
php实现可以设置中奖概率的抽奖程序代码分享
2014/01/19 PHP
数理公式,也可以这么唯美
2021/03/10 无线电
javascript之通用简单的table选项卡实现(二)
2010/05/09 Javascript
jQuery结合Json提交数据到Webservice,并接收从Webservice返回的Json数据
2011/02/18 Javascript
js性能优化 如何更快速加载你的JavaScript页面
2012/03/17 Javascript
JQuery入门——用one()方法绑定事件处理函数(仅触发一次)
2013/02/05 Javascript
jquery实现多级下拉菜单的实例代码
2013/10/02 Javascript
JS获取select-option-text_value的方法
2013/12/26 Javascript
jQuery实现大转盘抽奖活动仿QQ音乐代码分享
2015/08/21 Javascript
js实现的后台左侧管理菜单代码
2015/09/11 Javascript
JSONObject使用方法详解
2015/12/17 Javascript
浅谈javascript中的Function和Arguments
2016/08/30 Javascript
微信小程序 wxapp内容组件 icon详细介绍
2016/10/31 Javascript
纯html+css+javascript实现楼层跳跃式的页面布局(实例代码)
2017/10/25 Javascript
JS手机端touch事件计算滑动距离的方法示例
2017/10/26 Javascript
对angularjs框架下controller间的传值方法详解
2018/10/08 Javascript
使用VUE+iView+.Net Core上传图片的方法示例
2019/01/04 Javascript
layui form表单提交之后重新加载数据表格的方法
2019/09/11 Javascript
AntV F2和vue-cli构建移动端可视化视图过程详解
2019/10/08 Javascript
解决vue中使用less/sass及使用中遇到无效的问题
2020/10/24 Javascript
python使用xlrd和xlwt读写Excel文件的实例代码
2018/09/05 Python
python实现字符串和字典的转换
2018/09/29 Python
在macOS上搭建python环境的实现方法
2019/08/13 Python
python3注册全局热键的实现
2020/03/22 Python
python爬虫中采集中遇到的问题整理
2020/11/27 Python
Html5页面在微信端的分享的实现方法
2018/08/30 HTML / CSS
HTML5中的新元素介绍
2008/10/17 HTML / CSS
HTML5的表单(绝对特别强大的功能)使用示例
2013/06/20 HTML / CSS
基于HTML5 WebGL的3D机房的示例
2018/03/16 HTML / CSS
REISS美国官网:伦敦最受欢迎的时尚品牌
2019/08/16 全球购物
运行时异常与一般异常有何异同?
2014/01/05 面试题
会计自荐书
2013/12/02 职场文书
心理健康心得体会
2014/01/02 职场文书
浅谈如何写好演讲稿?
2019/06/12 职场文书
Python爬虫基础讲解之请求
2021/05/13 Python
MySQL串行化隔离级别(间隙锁实现)
2022/06/16 MySQL