PDO的数据库操作类

作者:袖梨 2022-06-24

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();
 }catch(Exception $e){
  $pdo->rollBack();
  echo "Failed: " . $e->getMessage();
 }

相关文章

精彩推荐