zoukankan      html  css  js  c++  java
  • 一个基于PDO的数据库操作类(新) + 一个PDO事务实例

    简介:这是一个基于PDO的数据库操作类(新) + 一个PDO事务实例的详细页面,介绍了和php,有关的知识、技巧、经验,和一些php源码等。

    class='pingjiaF' frameborder='0' src='http://biancheng.dnbcw.info/pingjia.php?id=339656' scrolling='no'>

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

    <?php
    /*
     *	作者:胡睿
     *	日期: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();
    	}
    

      代码下载:点击下载

    爱J2EE关注Java迈克尔杰克逊视频站JSON在线工具

    http://biancheng.dnbcw.info/php/339656.html pageNo:7
  • 相关阅读:
    vs2005 配置winpcap
    qt 解决中文乱码问题
    [翻译] QT正则表达式
    使用QSetting 读写ini文件
    [转]GNOME快捷键
    华为面试题之大整数相加
    qt 程序windows 上发布
    win7英文版中文乱码问题
    CURL命令 Alex
    Sendfile机制 Alex
  • 原文地址:https://www.cnblogs.com/ooooo/p/2245270.html
Copyright © 2011-2022 走看看