一个基于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 相关文章推荐
PHP面向对象分析设计的经验原则
Sep 20 PHP
攻克CakePHP系列三 表单数据增删改
Oct 22 PHP
php图片缩放实现方法
Feb 20 PHP
PHP简单实现“相关文章推荐”功能的方法
Jul 19 PHP
php中Snoopy类用法实例
Jun 19 PHP
分享php邮件管理器源码
Jan 06 PHP
joomla实现注册用户添加新字段的方法
May 05 PHP
PHP简单读取PDF页数的实现方法
Jul 21 PHP
php图像处理函数imagecopyresampled用法详解
Dec 02 PHP
浅谈PHP错误类型及屏蔽方法
May 27 PHP
PHP+RabbitMQ实现消息队列的完整代码
Mar 20 PHP
定位地理位置PHP判断员工打卡签到经纬度是否在打卡之内
May 23 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服务器页面间跳转实现方法
2012/08/02 PHP
PHP使用range协议实现输出文件断点续传代码实例
2014/07/04 PHP
Netbeans 8.2与PHP相关的新特性介绍
2016/10/08 PHP
详解PHP编码转换函数应用技巧
2016/10/22 PHP
PHP判断表达式中括号是否匹配的简单实例
2016/10/22 PHP
php删除txt文件指定行及按行读取txt文档数据的方法
2017/01/30 PHP
js 对联广告、漂浮广告封装类(IE,FF,Opera,Safari,Chrome
2009/11/26 Javascript
js querySelector和getElementById通过id获取元素的区别
2012/04/20 Javascript
javascript中打印当前的时间实现思路及代码
2013/12/18 Javascript
JS取request值以及自动执行使用示例
2014/02/24 Javascript
JavaScript Ajax编程 应用篇
2016/07/02 Javascript
微信小程序实现滑动删除效果
2017/05/19 Javascript
深入理解react-router@4.0 使用和源码解析
2017/05/23 Javascript
基于openlayers4实现点的扩散效果
2020/08/17 Javascript
vue组件jsx语法的具体使用
2018/05/21 Javascript
node使用Mongoose类库实现简单的增删改查
2018/11/08 Javascript
详解微信小程序的不同函数调用的几种方法
2019/05/08 Javascript
JS前端知识点 运算符优先级,URL编码与解码,String,Math,arguments操作整理总结
2019/06/27 Javascript
JS数组reduce()方法原理及使用技巧解析
2020/07/14 Javascript
[00:44]2016完美“圣”典 风云人物:Mikasa宣传片
2016/12/07 DOTA
初步认识Python中的列表与位运算符
2015/10/12 Python
基于python yield机制的异步操作同步化编程模型
2016/03/18 Python
深入解析Python中函数的参数与作用域
2016/03/20 Python
python如何对实例属性进行类型检查
2018/03/20 Python
Python爬虫实现(伪)球迷速成
2018/06/10 Python
pytorch中如何使用DataLoader对数据集进行批处理的方法
2019/08/06 Python
python将print输出的信息保留到日志文件中
2019/09/27 Python
tensorflow 实现从checkpoint中获取graph信息
2020/02/10 Python
Python如何实现小程序 无限求和平均
2020/02/18 Python
META-INF文件夹中的MANIFEST.MF的作用
2016/06/21 面试题
班风口号
2014/06/18 职场文书
商业企业管理专业求职信
2014/07/10 职场文书
商务信函英语问候语
2015/11/10 职场文书
教你怎么用Python操作MySql数据库
2021/05/31 Python
Ajax实现三级联动效果
2021/10/05 Javascript
浅谈Python中对象是如何被调用的
2022/04/06 Python