一个基于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 项目的方法
Jan 02 PHP
PHP 日期加减的类,很不错
Oct 10 PHP
php 静态变量与自定义常量的使用方法
Jan 26 PHP
PHP通过header实现文本文件下载的代码
Aug 08 PHP
深入密码加salt原理的分析
Jun 06 PHP
PHP变量内存分配问题记录整理
Nov 27 PHP
PHP常用数组函数介绍
Jul 28 PHP
WIFI万能钥匙密码查询接口实例
Sep 28 PHP
php经典算法集锦
Nov 14 PHP
php mysqli查询语句返回值类型实例分析
Jun 29 PHP
PHP转换文本框内容为HTML格式的方法
Jul 20 PHP
php面向对象程序设计中self与static的区别分析
May 21 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查询域名状态whois的类
2006/11/25 PHP
开源php中文分词系统SCWS安装和使用实例
2014/04/11 PHP
php简单生成随机数的方法
2015/07/30 PHP
PHP操作MySQL中BLOB字段的方法示例【存储文本与图片】
2017/09/15 PHP
Laravel基础-关于引入公共文件的两种方式
2019/10/18 PHP
静态页面下用javascript操作ACCESS数据库(读增改删)的代码
2007/05/14 Javascript
js定义对象或数组直接量时各浏览器对多余逗号的处理(json)
2011/03/05 Javascript
js replace 与replaceall实例用法详解
2013/08/03 Javascript
js中实现多态采用和继承类似的方法
2014/08/22 Javascript
js实现文本框中输入文字页面中div层同步获取文本框内容的方法
2015/03/03 Javascript
Javascript中Date类型和Math类型详解
2016/02/27 Javascript
jQuery 的 ready()的纯js替代方法
2016/11/20 Javascript
Omi v1.0.2发布正式支持传递javascript表达式
2017/03/21 Javascript
jQuery实现简单的计时器功能实例分析
2017/08/29 jQuery
js 原生判断内容区域是否滚动到底部的实例代码
2017/11/15 Javascript
echarts学习笔记之箱线图的分析与绘制详解
2017/11/22 Javascript
JS中Map和ForEach的区别
2018/02/05 Javascript
JavaScript内置对象math,global功能与用法实例分析
2019/06/10 Javascript
解决vue自定义全局消息框组件问题
2019/11/22 Javascript
详解elementUI中input框无法输入的问题
2020/04/27 Javascript
vscode+gulp轻松开发小程序的完整步骤
2020/10/18 Javascript
Node.js 中如何收集和解析命令行参数
2021/01/08 Javascript
python 字典操作提取key,value的方法
2019/06/26 Python
Python3进制之间的转换代码实例
2019/08/24 Python
使用PyTorch将文件夹下的图片分为训练集和验证集实例
2020/01/08 Python
django迁移文件migrations的实现
2020/03/31 Python
Python txt文件如何转换成字典
2020/11/03 Python
W3C公布最新的HTML5标准草案
2008/10/17 HTML / CSS
英国领先的游戏零售商:GAME
2019/09/24 全球购物
美国Max仓库:Max Warehouse
2020/05/31 全球购物
世界上最大的铁人三项商店:Tri UK
2020/11/04 全球购物
共产党员公开承诺书范文
2014/03/28 职场文书
银行工作心得体会范文
2016/01/23 职场文书
表扬稿表扬信的格式及范文
2019/06/24 职场文书
演讲开头怎么书写?
2019/08/06 职场文书
Vue h函数的使用详解
2022/02/18 Vue.js