一个基于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中使用asort进行中文排序失效的问题处理
Aug 18 PHP
PHP中的闭包(匿名函数)浅析
Feb 07 PHP
PHP封装的Twitter访问类实例
Jul 18 PHP
Zend Framework实现将session存储在memcache中的方法
Mar 22 PHP
php中输出json对象的值(实现方法)
Mar 07 PHP
thinkPHP框架实现的短信接口验证码功能示例
Jun 20 PHP
PHP实现的XXTEA加密解密算法示例
Aug 28 PHP
PHP 实现文件压缩解压操作的方法
Jun 14 PHP
php使用yield对性能提升的测试实例分析
Sep 19 PHP
laravel批量生成假数据的方法
Oct 09 PHP
关于laravel框架中的常用目录路径函数
Oct 23 PHP
Laravel5.1 框架路由基础详解
Jan 04 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
fgetcvs在linux的问题
2012/01/15 PHP
php session劫持和防范的方法
2013/11/12 PHP
Yii2中OAuth扩展及QQ互联登录实现方法
2016/05/16 PHP
JavaScript 获得选中文本内容的方法
2009/02/15 Javascript
javascript中的变量是传值还是传址的?
2010/04/19 Javascript
JS不间断向上滚动效果代码
2013/12/25 Javascript
jquery实现焦点图片随机切换效果的方法
2015/03/12 Javascript
JS实现登录页面记住密码和enter键登录方法推荐
2016/05/10 Javascript
js微信分享API
2020/10/11 Javascript
AngularJS框架的ng-app指令与自动加载实现方法分析
2017/01/04 Javascript
jquery 实现复选框的全选操作实例代码
2017/01/24 Javascript
详解webpack2+React 实例demo
2017/09/11 Javascript
nodejs使用node-xlsx生成excel的方法示例
2019/08/22 NodeJs
Node.js API详解之 Error模块用法实例分析
2020/05/14 Javascript
深入了解JavaScript词法作用域
2020/07/29 Javascript
[02:14]DOTA2英雄基础教程 修补匠
2013/12/23 DOTA
[05:56]第十六期——新进3大C之小兔基
2014/06/24 DOTA
Python中获取网页状态码的两个方法
2014/11/03 Python
go和python变量赋值遇到的一个问题
2017/08/31 Python
django中的HTML控件及参数传递方法
2018/03/20 Python
django admin 后台实现三级联动的示例代码
2018/06/22 Python
python实现扫雷游戏
2020/03/03 Python
python中rc1什么意思
2020/06/19 Python
【魔兽争霸3重制版】原版画面与淬火MOD画面对比
2021/03/26 魔兽争霸
大二自我鉴定范文
2013/10/05 职场文书
小区门卫岗位职责
2013/12/31 职场文书
信息总监管理职责范本
2014/03/08 职场文书
理发店策划方案
2014/06/05 职场文书
五月的鲜花活动方案
2014/08/21 职场文书
大三学年自我鉴定范文(3篇)
2014/09/28 职场文书
2015员工年度考核评语
2015/03/25 职场文书
爱国主义电影观后感
2015/06/18 职场文书
办公室规章制度范本
2015/08/04 职场文书
如何书写邀请函?
2019/06/24 职场文书
用python开发一款操作MySQL的小工具
2021/05/12 Python
Win11 22H2 2022怎么更新? 获得Win1122H22022版本升级技巧
2022/09/23 数码科技