好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

PDO的数据库操作类 - php类库

PDO的数据库操作类

/*     参数说明     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();  //开源代码phpfensi.com    }catch(Exception  $e ){     $pdo ->rollBack();     echo   "Failed: "  .  $e ->getMessage();   }

查看更多关于PDO的数据库操作类 - php类库的详细内容...

  阅读:39次