自写的利用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 相关文章推荐
PHP设计聊天室步步通
Oct 09 PHP
PHP 设计模式之观察者模式介绍
Feb 22 PHP
php专用数组排序类ArraySortUtil用法实例
Apr 03 PHP
php实现将上传word文件转为html的方法
Jun 03 PHP
PHP将二维数组某一个字段相同的数组合并起来的方法
Feb 26 PHP
Smarty分页实现方法完整实例
May 11 PHP
PHP获取用户客户端真实IP的解决方案
Oct 10 PHP
删除PHP数组中的重复元素的实现代码
Apr 10 PHP
Yii框架扩展CGridView增加导出CSV功能的方法
May 24 PHP
Laravel中unique和exists验证规则的优化详解
Jan 28 PHP
基于PHP实现短信验证码发送次数限制
Jul 11 PHP
如何在Mac上通过docker配置PHP开发环境
May 29 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
php笔记之常用文件操作
2010/10/12 PHP
PHP 第二节 数据类型之数组
2012/04/28 PHP
PHP实现图片上传并压缩
2015/12/22 PHP
PHP实现可自定义样式的分页类
2016/03/29 PHP
用js实现的页面关键字密度查询代码
2007/12/27 Javascript
escape编码与unescape解码汉字出现乱码的解决方法
2014/07/02 Javascript
JS实现可关闭的对联广告效果代码
2015/09/14 Javascript
JS实现浏览器状态栏显示时间的方法
2015/10/27 Javascript
jquery实现简洁文件上传表单样式
2015/11/02 Javascript
基于Bootstrap的Metronic框架实现条码和二维码的生成及打印处理操作
2016/08/29 Javascript
weex里Vuex state使用storage持久化详解
2017/09/09 Javascript
Node.js 如何利用异步提升任务处理速度
2019/01/07 Javascript
JavaScript函数的4种调用方法实例分析
2019/03/05 Javascript
深入学习JavaScript 高阶函数
2019/06/11 Javascript
关于layui表单中按钮自动提交的解决方法
2019/09/09 Javascript
在vue中使用echars实现上浮与下钻效果
2019/11/08 Javascript
在Vue项目中使用Typescript的实现
2019/12/19 Javascript
js实现购物车商品数量加减
2020/09/21 Javascript
vue 计算属性和侦听器的使用小结
2021/01/25 Vue.js
python 排列组合之itertools
2013/03/20 Python
Python环境变量设置方法
2016/08/28 Python
Python实现读取并保存文件的类
2017/05/11 Python
git使用.gitignore设置不生效或不起作用问题的解决方法
2017/06/01 Python
利用python编写一个图片主色转换的脚本
2017/12/07 Python
通过Python模块filecmp 对文件比较的实现方法
2018/06/29 Python
Python实现微信小程序支付功能
2019/07/25 Python
解决Django中调用keras的模型出现的问题
2019/08/07 Python
土耳其家居建材网站:Koçtaş
2016/11/22 全球购物
美国在线纱线商店:Darn Good Yarn
2019/03/20 全球购物
公司副总经理任命书
2014/06/05 职场文书
俞敏洪一分钟演讲稿
2014/08/26 职场文书
公司员工体检通知
2015/04/21 职场文书
会计入职心得体会
2016/01/22 职场文书
品德与社会教学反思
2016/02/24 职场文书
nginx配置文件使用环境变量的操作方法
2021/06/02 Servers
Linux中文件的基本属性介绍
2022/06/01 Servers