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


Posted in PHP onFebruary 19, 2018

前言

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

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

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

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

示例代码

<?php
class mysql{
 //常量声明
 const DSN = "mysql:host=[数据库地址];dbname=[数据库名];charset=utf8";//数据库地址与数据库名及编码
 const USERNAME = "[数据库用户名]";//用户名
 const PASSWD = "[数据库密码]";//密码
 
 //私有变量声明
 private $sql = NULL;//sql语句缓存
 private $link = NULL;//数据库连接
 private $result = NULL;//结果
 
 /*******************************************************************************
  * @ 名称:建立连接
  * @ 属性:私有
 *******************************************************************************/
 private function connect(){
  try {
   $this->link = new \PDO(self::DSN, self::USERNAME, self::PASSWD, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));//创建连接
  }
  catch (PDOException $e) {
   die ("Error!:".$e->getMessage()."<hr/>");
  }
 }
 
 /*******************************************************************************
  * @ 名称:执行sql语句
  * @ 属性:私有
  * @ 入口参数:无
  * @ 出口参数:执行成功返回真,否则返回假,查询语句存储结果集数组
 *******************************************************************************/
 private function sql(){
  try {
   $this->connect();
   $this->link->beginTransaction();//开启一个事务
   $prepare = $this->link->prepare($this->sql);//准备查询语句
   $prepare->execute();//执行查询语句并返回结果集
   $cmd = strtolower(substr(trim($this->sql),0,6));//截取命令字符
   if($cmd == "select"){
    $array = $prepare->fetch(PDO::FETCH_ASSOC);//获取结果集中的所有数据
    if(count($array)){
     $this->result = NULL;
     $this->result = $array;//存储结果集
     return true;//查询到结果返回真
    }else{
     return false;//否则返回假
    }
   }else if($cmd == "insert" || $cmd == "delete" || $cmd == "update"){
    if($prepare){
     return true;//执行成功返回真
    }else{
     return false;//否则返回假
    }
   }
   $this->link->commit(); //如果正确执行完成那么确认commit
  } catch (PDOException $e) {
   $this->link->rollBack();//如果执行中有错误的情况下回滚
   die ("Error!:".$e->getMessage()."<hr/>");
  }
 }
 
 /*******************************************************************************
  * @ 名称:sql语句处理
  * @ 属性:公有
  * @ 入口参数:cmd增删改查字符命令;dsname数据表名;first第一个参数;second第二个参数;
  * @ 出口参数:执行成功返回真,否则返回假,查询操作返回结果集数组
  * @ 使用示例:
  $mysql->handle("insert","abc","openid,nickname","'123','abc'");//增加
  $mysql->handle("delete","abc","openid='123'");//删除
  $mysql->handle("update","abc","nickname='def'","openid='123'");//更新
  $res = $mysql->handle("select","abc","*","openid='123'");//查询
  if(is_array($res) == true){
   foreach($res as $key=>$val){
    echo $key."=".$val."<hr>";
   }
  }//遍历查询结果数组
 *******************************************************************************/
 public function handle($cmd,$dsname,$first,$second=NULL){
  switch($cmd){
   case 'insert'://插入
    $this->sql = "insert into $dsname ($first) values ($second)";
    break;
   case 'delete'://删除
    $this->sql = "delete from $dsname where $first";
    break;
   case 'update'://更新
    $this->sql = "update $dsname set $first where $second";
    break;
   case 'select'://查询
    $this->sql = "select $first from $dsname where $second";
    break;
   default:
    die ("Syntax Error!");//提示语法错误
    break;
  }
  
  $res = $this->sql();//执行sql语句
  if($res){
   if($cmd == 'select'){
    return $this->result;//返回查询结果
   }else{
    return true;//执行成功返回真
   }
  }else{
   return false;//否则返回假
  }
  $this->link=NULL;;//关闭数据库
 }
}
$mysql = new mysql;//数据库类的实例化
?>

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

PHP 相关文章推荐
mysql时区问题
Mar 26 PHP
php中数组首字符过滤功能代码
Jul 31 PHP
php 删除目录下N分钟前创建的所有文件的实现代码
Aug 10 PHP
php导出word格式数据的代码实例
Nov 25 PHP
PHP类继承 extends使用介绍
Jan 14 PHP
php提交post数组参数实例分析
Dec 17 PHP
PHP实现批量上传单个文件
Dec 29 PHP
PHP基于cookie与session统计网站访问量并输出显示的方法
Jan 15 PHP
深入理解PHP JSON数组与对象
Jul 19 PHP
php redis实现文章发布系统(用户投票系统)
Mar 04 PHP
thinkPHP5框架auth权限控制类与用法示例
Jun 12 PHP
PHP 观察者模式深入理解与应用分析
Sep 25 PHP
PHP实现QQ、微信和支付宝三合一收款码实例代码
Feb 19 #PHP
浅析PHP数据导出知识点
Feb 17 #PHP
PHP 应用容器化以及部署方法
Feb 12 #PHP
PHP使用Redis长连接的方法详解
Feb 12 #PHP
PHP长连接实现与使用方法详解
Feb 11 #PHP
搜索附近的人PHP实现代码
Feb 11 #PHP
PHP的RSA加密解密方法以及开发接口使用
Feb 11 #PHP
You might like
mysql 字段类型说明
2007/04/27 PHP
隐性调用php程序的方法
2009/03/09 PHP
php打造属于自己的MVC框架
2012/03/07 PHP
dvwa+xampp搭建显示乱码的问题及解决方案
2015/08/23 PHP
详解配置 Apache 服务器支持 PHP 文件的解析
2017/02/15 PHP
Prototype的Class.create函数解析
2011/09/22 Javascript
线路分流自动智能跳转代码,自动选择最快镜像网站(js)
2011/10/31 Javascript
深入理解JavaScript系列(1) 编写高质量JavaScript代码的基本要点
2012/01/15 Javascript
Javascript实现真实字符串剩余字数提示的实例代码
2013/10/22 Javascript
JavaScript 语言基础知识点总结(思维导图)
2013/11/10 Javascript
7个JS基础知识总结
2014/03/05 Javascript
基于JavaScript制作霓虹灯文字 代码 特效
2015/09/01 Javascript
vue.js实现请求数据的方法示例
2017/02/07 Javascript
jQuery分页插件jquery.pagination.js使用方法解析
2017/02/09 Javascript
微信小程序实现多宫格抽奖活动
2020/04/15 Javascript
jquery+ajaxform+springboot控件实现数据更新功能
2018/01/22 jQuery
基于游标的分页接口实现代码示例
2018/11/12 Javascript
微信小程序非跳转式组件授权登录的方法示例
2019/05/22 Javascript
react 组件传值的三种方法
2019/06/03 Javascript
jQuery表单选择器用法详解
2019/08/22 jQuery
原生JS实现微信通讯录
2020/06/18 Javascript
Python日期操作学习笔记
2008/10/07 Python
python excel使用xlutils类库实现追加写功能的方法
2018/05/02 Python
Python面向对象之反射/自省机制实例分析
2018/08/24 Python
解决python便携版无法直接运行py文件的问题
2020/09/01 Python
Python实现粒子群算法的示例
2021/02/14 Python
解决html5中video标签无法播放mp4问题的办法
2017/05/07 HTML / CSS
HTML5实现无刷新修改URL的方法
2019/11/14 HTML / CSS
会计专业毕业自荐书范文
2014/02/08 职场文书
社区活动总结报告
2014/05/05 职场文书
二手房购房协议书范本
2014/10/05 职场文书
四风批评与自我批评发言稿
2014/10/14 职场文书
2014年学校团委工作总结
2014/12/20 职场文书
总经理司机岗位职责
2015/04/10 职场文书
投诉信范文
2015/07/02 职场文书
学生会宣传部竞选稿
2015/11/21 职场文书