一个基于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 相关文章推荐
rrmdir php中递归删除目录及目录下的文件
May 15 PHP
比较时间段一与时间段二是否有交集的php函数
May 31 PHP
PHP生成自定义长度随机字符串的函数分享
May 04 PHP
PHP中date与gmdate的区别及默认时区设置
May 12 PHP
PHP实现Soap通讯的方法
Nov 03 PHP
php将日期格式转换成xx天前的格式
Apr 16 PHP
浅谈PHP中output_buffering
Jul 13 PHP
php 指定范围内多个随机数代码实例
Jul 18 PHP
微信红包随机生成算法php版
Jul 21 PHP
基于yaf框架和uploadify插件,做的一个导入excel文件,查看并保存数据的功能
Jan 24 PHP
详解PHP变量传值赋值和引用赋值变量销毁
Mar 23 PHP
laravel实现图片上传预览,及编辑时可更换图片,并实时变化的例子
Nov 14 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
留言板翻页的实现详解
2006/10/09 PHP
php 保留字列表
2012/10/04 PHP
php中time()和mktime()方法的区别
2013/09/28 PHP
简单说说PHP优化那些事(经验分享)
2014/11/27 PHP
jQuery之选择组件的深入解析
2013/06/19 Javascript
Javascript表格翻页效果的具体实现
2013/10/05 Javascript
js对文章内容进行分页示例代码
2014/03/05 Javascript
Extjs Label的 fieldLabel和html属性值对齐的方法
2014/06/15 Javascript
解决jquery实现的radio重新选中的问题
2015/07/03 Javascript
bootstrap下拉列表与输入框组结合的样式调整
2016/10/08 Javascript
JS生成一维码(条形码)功能示例
2017/01/19 Javascript
详解从Node.js的child_process模块来学习父子进程之间的通信
2017/03/27 Javascript
浅谈通过JS拦截 pushState和replaceState事件
2017/07/21 Javascript
js 倒计时(高效率服务器时间同步)
2017/09/12 Javascript
vue开发chrome插件,实现获取界面数据和保存到数据库功能
2020/12/01 Vue.js
详解ES6实现类的私有变量的几种写法
2021/02/10 Javascript
python中查找excel某一列的重复数据 剔除之后打印
2013/02/10 Python
跟老齐学Python之使用Python查询更新数据库
2014/11/25 Python
Python对list列表结构中的值进行去重的方法总结
2016/05/07 Python
Python中字符串格式化str.format的详细介绍
2017/02/17 Python
pytorch cnn 识别手写的字实现自建图片数据
2018/05/20 Python
Python如何基于smtplib发不同格式的邮件
2019/12/30 Python
python实现同一局域网下传输图片
2020/03/20 Python
简单了解Django项目应用创建过程
2020/07/06 Python
Jmeter HTTPS接口测试证书导入过程图解
2020/07/22 Python
纯css3无js实现的Android Logo(有简单动画)
2013/01/21 HTML / CSS
药学专业个人的自我评价
2013/12/31 职场文书
大学辅导员事迹材料
2014/02/05 职场文书
模具设计与制造专业推荐信
2014/02/16 职场文书
《大禹治水》教学反思
2014/04/27 职场文书
运输企业安全生产责任书
2014/07/28 职场文书
迎国庆横幅标语
2014/10/08 职场文书
个人优缺点总结
2015/02/28 职场文书
财务会计求职信范文
2015/03/20 职场文书
海上钢琴师的观后感
2015/06/11 职场文书
2016年党课培训学习心得体会
2016/01/07 职场文书