一个基于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中的phpinfo()函数
Jun 06 PHP
php调用c接口无错版介绍
Mar 11 PHP
php下载文件源代码(强制任意文件格式下载)
May 09 PHP
PHP使用数组依次替换字符串中匹配项
Jan 08 PHP
WordPress主题制作中自定义头部的相关PHP函数解析
Jan 08 PHP
使用一个for循环将N*N的二维数组的所有值置1实现方法
May 29 PHP
PHP实现模拟http请求的方法分析
Dec 20 PHP
php中isset与empty函数的困惑与用法分析
Jul 05 PHP
Laravel中validation验证 返回中文提示 全局设置的方法
Sep 29 PHP
laravel实现登录时监听事件,添加登录用户的记录方法
Sep 30 PHP
laravel框架如何设置公共头和公共尾
Oct 22 PHP
laravel框架中控制器的创建和使用方法分析
Nov 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实现让页面只能被百度gogole蜘蛛访问的方法
2009/12/29 PHP
PHP第一季视频教程(李炎恢+php100 不断更新)
2011/05/29 PHP
浅谈PHP接收POST数据方式
2015/06/05 PHP
浅谈PHP封装CURL
2019/03/06 PHP
JS array 数组详解
2009/03/22 Javascript
tangram框架响应式加载图片方法
2013/11/21 Javascript
纯js代码实现简单计算器
2015/12/02 Javascript
详解AngularJS中module模块的导入导出
2015/12/10 Javascript
Backbone.js框架中简单的View视图编写学习笔记
2016/02/14 Javascript
Node.js DES加密的简单实现
2016/07/07 Javascript
AngularJS删除路由中的#符号的方法
2016/09/20 Javascript
使用JSON作为函数的参数的优缺点
2016/10/27 Javascript
jQuery焦点图轮播效果实现方法
2016/12/19 Javascript
js单页hash路由原理与应用实战详解
2017/08/14 Javascript
微信小程序之swiper轮播图中的图片自适应高度的方法
2018/04/23 Javascript
解决jQuery使用append添加的元素事件无效的问题
2018/08/30 jQuery
详解Vue之父子组件传值
2019/04/01 Javascript
js事件机制----捕获与冒泡机制实例分析
2020/05/22 Javascript
python多线程用法实例详解
2015/01/15 Python
python画图——实现在图上标注上具体数值的方法
2019/07/08 Python
详解Python并发编程之创建多线程的几种方法
2019/08/23 Python
python实现画出e指数函数的图像
2019/11/21 Python
Kears 使用:通过回调函数保存最佳准确率下的模型操作
2020/06/17 Python
CSS3 Media Queries(响应式布局可以让你定制不同的分辨率和设备)
2013/06/06 HTML / CSS
详解基于canvas的视频遮罩插件
2018/01/04 HTML / CSS
英国口碑最好的的维他命胶囊品牌:Myvitamins(有中文站)
2016/12/03 全球购物
美国最大点评网站:Yelp
2018/02/14 全球购物
中科软笔试题和面试题
2014/10/07 面试题
拉丁舞学习者的自我评价
2013/10/27 职场文书
心得体会怎么写
2013/12/30 职场文书
经典演讲稿范文
2013/12/30 职场文书
文明寝室申报材料
2014/05/12 职场文书
2015年助理工程师工作总结
2015/04/03 职场文书
工程服务质量承诺书
2015/04/29 职场文书
2016元旦文艺汇演主持词
2015/07/06 职场文书
CSS list-style-type属性使用方法
2023/05/21 HTML / CSS