当前位置:首页 > PHP教程 > php类库 > 列表

自写的利用PDO对mysql数据库增删改查操作类

发布:smiling 来源: PHP粉丝网  添加日期:2021-09-03 14:04:21 浏览: 评论:0 

这篇文章主要给大家介绍了关于自写的利用PDO对mysql数据库的增删改查操作类的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。

前言

PDO一是PHP数据对象(PHP Data Object)的缩写。

并不能使用PDO扩展本身执行任何数据库操作,必须使用一个database-specific PDO driver(针对特定数据库的PDO驱动)访问数据库服务器。

PDO并不提供数据库抽象,它并不会重写SQL或提供数据库本身缺失的功能,如果你需要这种功能,你需要使用一个更加成熟的抽象层。

最近在做项目时用到了PDO操作mysql数据库,于是自己写了一个类文件,命名为mysql_class.php文件代码如下:

  1. <?php 
  2. class mysql{ 
  3.  //常量声明 
  4.  const DSN = "mysql:host=[数据库地址];dbname=[数据库名];charset=utf8";//数据库地址与数据库名及编码 
  5.  const USERNAME = "[数据库用户名]";//用户名 
  6.  const PASSWD = "[数据库密码]";//密码 
  7.    
  8.  //私有变量声明 
  9.  private $sql = NULL;//sql语句缓存 
  10.  private $link = NULL;//数据库连接 
  11.  private $result = NULL;//结果 
  12.    
  13.  /******************************************************************************* 
  14.   * @ 名称:建立连接 
  15.   * @ 属性:私有 
  16.  *******************************************************************************/ 
  17.  private function connect(){ 
  18.   try { 
  19.    $this->link = new \PDO(self::DSN, self::USERNAME, self::PASSWD, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));//创建连接 
  20.   } 
  21.   catch (PDOException $e) { 
  22.    die ("Error!:".$e->getMessage()."<hr/>"); 
  23.   } 
  24.  } 
  25.    
  26.  /******************************************************************************* 
  27.   * @ 名称:执行sql语句 
  28.   * @ 属性:私有 
  29.   * @ 入口参数:无 
  30.   * @ 出口参数:执行成功返回真,否则返回假,查询语句存储结果集数组 
  31.  *******************************************************************************/ 
  32.  private function sql(){ 
  33.   try { 
  34.    $this->connect(); 
  35.    $this->link->beginTransaction();//开启一个事务 
  36.    $prepare = $this->link->prepare($this->sql);//准备查询语句 
  37.    $prepare->execute();//执行查询语句并返回结果集 
  38.    $cmd = strtolower(substr(trim($this->sql),0,6));//截取命令字符 
  39.    if($cmd == "select"){ 
  40.     $array = $prepare->fetch(PDO::FETCH_ASSOC);//获取结果集中的所有数据 
  41.     if(count($array)){ 
  42.      $this->result = NULL; 
  43.      $this->result = $array;//存储结果集 
  44.      return true;//查询到结果返回真 
  45.     }else
  46.      return false;//否则返回假 
  47.     } 
  48.    }else if($cmd == "insert" || $cmd == "delete" || $cmd == "update"){ 
  49.     if($prepare){ 
  50.      return true;//执行成功返回真 
  51.     }else
  52.      return false;//否则返回假 
  53.     } 
  54.    } 
  55.    $this->link->commit(); //如果正确执行完成那么确认commit 
  56.   } catch (PDOException $e) { 
  57.    $this->link->rollBack();//如果执行中有错误的情况下回滚 
  58.    die ("Error!:".$e->getMessage()."<hr/>"); 
  59.   } 
  60.  } 
  61.    
  62.  /******************************************************************************* 
  63.   * @ 名称:sql语句处理 
  64.   * @ 属性:公有 
  65.   * @ 入口参数:cmd增删改查字符命令;dsname数据表名;first第一个参数;second第二个参数; 
  66.   * @ 出口参数:执行成功返回真,否则返回假,查询操作返回结果集数组 
  67.   * @ 使用示例: 
  68.   $mysql->handle("insert","abc","openid,nickname","'123','abc'");//增加 
  69.   $mysql->handle("delete","abc","openid='123'");//删除 
  70.   $mysql->handle("update","abc","nickname='def'","openid='123'");//更新 
  71.   $res = $mysql->handle("select","abc","*","openid='123'");//查询 
  72.   if(is_array($res) == true){ 
  73.    foreach($res as $key=>$val){ 
  74.     echo $key."=".$val."<hr>"; 
  75.    } 
  76.   }//遍历查询结果数组 
  77.  *******************************************************************************/ 
  78.  public function handle($cmd,$dsname,$first,$second=NULL){ 
  79.   switch($cmd){ 
  80.    case 'insert'://插入 
  81.     $this->sql = "insert into $dsname ($first) values ($second)"
  82.     break
  83.    case 'delete'://删除 
  84.     $this->sql = "delete from $dsname where $first"
  85.     break
  86.    case 'update'://更新 
  87.     $this->sql = "update $dsname set $first where $second"
  88.     break
  89.    case 'select'://查询 
  90.     $this->sql = "select $first from $dsname where $second"
  91.     break
  92.    default
  93.     die ("Syntax Error!");//提示语法错误 
  94.     break
  95.   } 
  96.     
  97.   $res = $this->sql();//执行sql语句 
  98.   if($res){ 
  99.    if($cmd == 'select'){ 
  100.     return $this->result;//返回查询结果 
  101.    }else
  102.     return true;//执行成功返回真 
  103.    } 
  104.   }else
  105.    return false;//否则返回假 
  106.   } 
  107.   $this->link=NULL;;//关闭数据库 
  108.  } 
  109. $mysql = new mysql;//数据库类的实例化 
  110. ?>

Tags: PDO mysql增删改查

分享到: