自写的利用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和ACCESS写聊天室(八)
Oct 09 PHP
php Ajax乱码
Apr 09 PHP
PHP中改变图片的尺寸大小的代码
Jul 17 PHP
php 多关键字 高亮显示实现代码
Apr 23 PHP
PHP漏洞全解(详细介绍)
Nov 13 PHP
PHP遍历并打印指定目录下所有文件实例
Feb 10 PHP
php数组键值用法实例分析
Feb 27 PHP
Zend Framework教程之Application和Bootstrap用法详解
Mar 10 PHP
PHP中的Trait 特性及作用
Apr 03 PHP
Yii2实现多域名跨域同步登录退出
Feb 04 PHP
基于ThinkPHP5.0实现图片上传插件
Sep 25 PHP
Laravel框架自定义验证过程实例分析
Feb 01 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
星际玩家的三大定律
2020/03/04 星际争霸
使用PHP数组实现无限分类,不使用数据库,不使用递归.
2006/12/09 PHP
PHP 删除一个目录及目录下的所有文件的函数代码
2010/05/26 PHP
php递归调用删除数组空值元素的方法
2015/04/28 PHP
php array_udiff_assoc 计算两个数组的差集实例
2016/11/12 PHP
PHP实现的统计数据功能详解
2016/12/06 PHP
Laravel框架文件上传功能实现方法示例
2019/04/16 PHP
JavaScript 对任意元素,自定义右键菜单的实现方法
2013/05/08 Javascript
使用jquery获取url以及jquery获取url参数的实现方法
2016/05/25 Javascript
js实现适合新闻类图片的轮播效果
2017/02/05 Javascript
详解如何在vue项目中使用eslint+prettier格式化代码
2018/11/10 Javascript
解决ant Design中this.props.form.validateFields未执行的问题
2020/10/27 Javascript
Python Web框架Flask中使用七牛云存储实例
2015/02/08 Python
python使用Queue在多个子进程间交换数据的方法
2015/04/18 Python
介绍Python的@property装饰器的用法
2015/04/28 Python
python实现带错误处理功能的远程文件读取方法
2015/04/29 Python
python使用fork实现守护进程的方法
2017/11/16 Python
利用python对Excel中的特定数据提取并写入新表的方法
2018/06/14 Python
Python利用matplotlib做图中图及次坐标轴的实例
2019/07/08 Python
pytorch 更改预训练模型网络结构的方法
2019/08/19 Python
通过字符串导入 Python 模块的方法详解
2019/10/27 Python
python实现马丁策略回测3000只股票的实例代码
2021/01/22 Python
5分钟让你掌握css3阴影、倒影、渐变小技巧(小编推荐)
2016/08/15 HTML / CSS
芭比波朗加拿大官方网站:Bobbi Brown Cosmetics CA
2020/11/05 全球购物
动物学专业毕业生求职信
2013/10/11 职场文书
管理学专业个人求职信范文
2013/12/13 职场文书
大学生自我鉴定范文模板
2014/01/21 职场文书
数控专业个人求职信范文
2014/02/05 职场文书
高中运动会入场词
2014/02/14 职场文书
社会公德演讲稿
2014/05/20 职场文书
学校欢迎标语
2014/06/18 职场文书
2015年大学班长个人工作总结
2015/04/24 职场文书
员工辞职信范文大全
2015/05/12 职场文书
执行力心得体会范文
2016/01/11 职场文书
写作技巧:如何撰写一份优秀的营销策划书
2019/08/13 职场文书
vue生命周期钩子函数以及触发时机
2022/04/26 Vue.js