/*

* 作者:胡睿

* 日期:2011/03/19

* 电邮:hooray0905@foxmail.com

*

* 20110319

* 常用数据库操作,如:增删改查,获取单条记录、多条记录,返回最新一条插入记录id,返回操作记录行数等

* 20110630

* 整体修改方法,合并部分参数

* 规范代码,一个方法里只有1个return语句

*/

/*

参数说明

int $debug 是否开启调试,开启则输出sql语句

int $mode 0 返回数组

1 返回单条记录

2 返回行数

string $table 数据库表

string $fields 需要查询的数据库字段,允许为空,默认为查找全部

string $sqlwhere 查询条件,允许为空

string $orderby 排序,允许为空,默认为id倒序

*/

function hrSelect($debug, $mode, $table, $fields="*", $sqlwhere="", $orderby="id desc"){

global $pdo;

if($debug){

if($mode == 2){

echo "select count(*) from $table where 1=1 $sqlwhere order by $orderby";

}elseif($mode == 1){

echo "select $fields from $table where 1=1 $sqlwhere";

}else{

echo "select $fields from $table where 1=1 $sqlwhere order by $orderby";

}

exit;

}else{

if($mode == 2){

$rs = $pdo->query("select count(*) from $table where 1=1 $sqlwhere order by $orderby");

$return = $rs->fetchColumn();

}elseif($mode == 1){

$rs = $pdo->query("select $fields from $table where 1=1 $sqlwhere");

$return = $rs->fetch();

}else{

$rs = $pdo->query("select $fields from $table where 1=1 $sqlwhere order by $orderby");

$return = $rs->fetchAll();

}

return $return;

}

}

/*

参数说明

int $debug 是否开启调试,开启则输出sql语句

int $mode 0 默认insert,无返回信息

1 返回执行条目数

2 返回最后一次插入记录的id

string $table 数据库表

string $fields 需要插入数据库的字段

string $values 需要插入数据库的信息,必须与$fields一一对应

*/

function hrInsert($debug, $mode, $table, $fields, $values){

global $pdo;

if($debug){

echo "insert into $table ($fields) values ($values)";

exit;

}else{

if($mode == 2){

$return = $pdo->lastInsertId("insert into $table ($fields) values ($values)");

}elseif($mode == 1){

$return = $pdo->exec("insert into $table ($fields) values ($values)");

}else{

$pdo->query("insert into $table ($fields) values ($values)");

exit;

}

return $return;

}

}

/*

参数说明

int $debug 是否开启调试,开启则输出sql语句

int $mode 0 默认update,无返回信息

1 返回执行条目数

string $table 数据库表

string $set 需要更新的字段及内容,格式:a='abc',b=2,c='2010-10-10 10:10:10'

string $sqlwhere 修改条件,允许为空

*/

function hrUpdate($debug, $mode, $table, $set, $sqlwhere=""){

global $pdo;

if($debug){

echo "update $table set $set where 1=1 $sqlwhere";

exit;

}else{

if($mode==1){

$return = $pdo->exec("update $table set $set where 1=1 $sqlwhere");

}else{

$pdo->query("update $table set $set where 1=1 $sqlwhere");

exit;

}

return $return;

}

}

/*

参数说明

int $debug 是否开启调试,开启则输出sql语句

int $mode 0 默认delete,无返回信息

1 返回执行条目数

string $table 数据库表

string $sqlwhere 删除条件,允许为空

*/

function hrDelete($debug, $mode, $table, $sqlwhere=""){

global $pdo;

if($debug){

echo "delete from $table where 1=1 $sqlwhere";

exit;

}else{

if($mode == 1){

$return = $pdo->exec("delete from $table where 1=1 $sqlwhere");

}else{

$pdo->query("delete from $table where 1=1 $sqlwhere");

exit;

}

return $return;

}

}

?>

另外一段代码是基于我这个数据库操作类的事务实例:

/*

注意,数据库操作表类型必须为InnoDB,其他类型不支持事务

PDO事务机制

$pdo->beginTransaction(); --开启事务

$pdo->commit(); --结束事务

$pdo->rollBack(); --回滚操作

示例,用try/catch包住db操作,当事务内的db操作出现中断,则执行回滚并抛出异常信息。

*/

try{

$pdo->beginTransaction();

hrInsert(0,1,"class","name,parentid","'god',0"); //可以正常执行

hrInsert(0,0,0,"tb_searchlog","userid,code","4"); //出错

$pdo->commit();

}catch(Exception $e){

$pdo->rollBack();

echo "Failed: " . $e->getMessage();

}

代码下载:点击下载

php pdo 事物类,一个基于PDO的数据库操作类(新) 一个PDO事务实例相关推荐

  1. php pdo oracle操作类,一个基于PDO的数据库操作类

    百度之后决定使用PDO,至于为什么选择PDO,这里就不再多说,大家自己去百度下就能明白. 既然要换,那最基本就需要有个常用的数据库操作类,也就是所谓的增删改查等,昨晚捣腾了一晚,大致弄出了个雏形,以下 ...

  2. 全新的PDO数据库操作类(仅适用Mysql)

    1年前,也差不多刚开博那会,分享过一个pdo的数据库操作类(可参见:http://www.cnblogs.com/hooray/archive/2011/06/30/2094743.html),与其说 ...

  3. 天猫php采集列表,QueryList: QueryList是一个基于phpQuery的通用列表采集类,是一个简单、 灵活、强大的采集工具,采集任何复杂的页面 基本上就一句话就能搞定了。...

    #QueryList交流社区: http://querylist.cc/ #QueryList文档: http://doc.querylist.cc/ #QueryList交流QQ群:12326696 ...

  4. 艾伟:基于.NET平台的Windows编程实战(四)—— 数据库操作类的编写

    本系列文章导航 基于.NET平台的Windows编程实战(一)--前言 基于.NET平台的Windows编程实战(二)-- 需求分析与数据库设计 基于.NET平台的Windows编程实战(四)-- 数 ...

  5. 基于javascript的asp数据库操作类,含分页、字符串截取、用户登陆验证[原创]

    2005.01.15发表于blog.csdn.net/zxub 无聊又用了用asp,发现还是不爽,已经习惯了面向对象了,就想改进了,vbscript不用,感觉看起来很不爽,就用javascript写了 ...

  6. 一个简单而又灵活的数据库操作类

    一个简单而又灵活的数据库操作类 作者: 紫瑗 ***************************************************************************** ...

  7. ACCESS数据库操作必须使用一个可更新的查询 解决办法

    ACCESS数据库操作必须使用一个可更新的查询 解决办法 ACCESS数据库无法更新问题: 一般在Winxp与windows 2003 server下,文件目录的只读属性会影响网站程序写数据库操作,即 ...

  8. php数据库操作类的调用优化,PHP PDO优化数据库操作类 多数据库驱动类

    就是做一下整理 PHP PDO类操作.简化操作流程 更多内容 http://git.oschina.net/youkuiyuan/yky_test/blob/master/class/pdo.clas ...

  9. php pdo 支持mysql表类型_全新的PDO数据库操作类php版(仅适用Mysql)

    复制代码 代码如下: /** * 作者:胡睿 * 日期:2012/07/21 * 电邮:hooray0905@foxmail.com */ class HRDB{ protected $pdo; pr ...

最新文章

  1. 整理了一个castle的文档,供大家学习使用
  2. 第十五届全国大学生智能汽车竞赛人工智能创意赛(预赛)
  3. 使用sui实现的选择控件【性别、日期、省市级联】
  4. 【剑指Offer】16重建二叉树
  5. oracle的all函数,oracle函数 MIN([distinct|all]x)
  6. python脚本编写_如何用Python包编写一个简单的脚本,表达你对父母的爱?
  7. 一文详解 Prometheus 的高可用方案:Thanos
  8. HTML的footer置于页面最底部
  9. 前端学习(3156):react-hello-react之脚手架文件_src
  10. c+++11并发编程语言,C++11并发编程:多线程std:thread
  11. 【Elasticsearch】消除 Elasticsearch 中的重复文档
  12. Atitit ceo之道 艾龙 著 atitit 各分部ceo cao行政经理职责.docx 1.1. “重大执行权”和“日常执行权”两块分离 ,重大事件如大政方针、重大人事任命和重大投资方面
  13. windows中文件夹打包成Jar包 cmd命令
  14. 未来智安XDR及核心组件产品上榜《嘶吼2022网络安全产业图谱》
  15. 开源中最好的Web开发资源汇总
  16. mac mysql.sock_Mac OS 下 mysql 找不到 mysql.sock 的解决过程
  17. SM4国密算法实现分析
  18. 大集中系统的个人所得税解决方案
  19. golang单元测试:testing包的基本使用
  20. 世界500强高频逻辑推理智力面试题 (三)

热门文章

  1. Python——类(class)的定义及使用
  2. Lesson 18 Electric currents in modern art 内容鉴赏
  3. 性能诊断定位之CPU问题排查(一):win10环境1
  4. 净水行业首家,安吉尔新水效国标检测能力获CNAS认可
  5. Oracle 时间差计算 数据库关于时间计算
  6. urllib和urllib2的区别和使用
  7. LineMod源码梳理
  8. Web前端-Ajax-01
  9. Python入门三:安装Pyqt5
  10. centos8 安装mysql8(二)