前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一个基于PDO的数据库操作类(新) + 一个PDO事务实例

一个基于PDO的数据库操作类(新) + 一个PDO事务实例

作者头像
胡尐睿丶
发布2022-03-23 15:10:04
4010
发布2022-03-23 15:10:04
举报
文章被收录于专栏:代码小睿代码小睿

  原先已经写过一个PDO的数据库操作类,这次只是在原先基础上进行修改。

代码语言:javascript
复制
<?php
/*
 *	作者:胡睿
 *	日期:2011/03/19
 *	
 *	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;
		}
	}
?>

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

代码语言:javascript
复制
	/*
		注意,数据库操作表类型必须为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();
	}

  代码下载:点击下载

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2011-06-30 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档