自写的利用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 相关文章推荐
一个简单实现多条件查询的例子
Oct 09 PHP
PHP 面向对象 final类与final方法
May 05 PHP
PHP学习笔记之一
Jan 17 PHP
PHP版国家代码、缩写查询函数代码
Aug 14 PHP
PHP判断网络文件是否存在的方法
Mar 12 PHP
PHP模拟QQ登录的方法
Jul 29 PHP
PHP版微信第三方实现一键登录及获取用户信息的方法
Oct 14 PHP
thinkPHP框架可添加js事件的分页类customPage.class.php完整实例
Mar 16 PHP
浅谈关于PHP解决图片无损压缩的问题
Sep 01 PHP
PHP实现SMTP邮件的发送实例
Sep 27 PHP
PHP设计模式之工厂模式(Factory Pattern)的讲解
Mar 21 PHP
PHP dirname简单使用代码实例
Nov 13 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
ThinkPHP之R方法实例详解
2014/06/20 PHP
PHP addcslashes()函数讲解
2019/02/03 PHP
ThinkPHP5.0框架使用build 自动生成模块操作示例
2019/04/11 PHP
php实现 master-worker 守护多进程模式的实例代码
2019/07/20 PHP
如何在centos8自定义目录安装php7.3
2019/11/28 PHP
JavaScript使用cookie
2007/02/02 Javascript
JavaScript 在线压缩和格式化收藏
2009/01/16 Javascript
jQuery 源码分析笔记(6) jQuery.data
2011/06/08 Javascript
html5 canvas js(数字时钟)实例代码
2013/12/23 Javascript
Jquery修改页面标题title其它JS失效的解决方法
2014/10/31 Javascript
对JavaScript中this指针的新理解分享
2015/01/31 Javascript
纯javascript判断查询日期是否为有效日期
2015/08/24 Javascript
JavaScript中的数组遍历forEach()与map()方法以及兼容写法介绍
2016/05/19 Javascript
浅谈jquery.form.js的ajaxSubmit和ajaxForm的使用
2016/09/09 Javascript
微信小程序 Page()函数详解
2016/10/17 Javascript
JavaScript中的一些隐式转换和总结(推荐)
2017/12/22 Javascript
在ES5与ES6环境下处理函数默认参数的实现方法
2018/05/13 Javascript
js实现文章目录索引导航(table of content)
2020/05/10 Javascript
[03:07]2015国际邀请赛选手档案EHOME.rOtK 是什么让他落泪?
2015/07/31 DOTA
Python获取文件ssdeep值的方法
2014/10/05 Python
python模块之StringIO使用示例
2015/04/08 Python
VTK与Python实现机械臂三维模型可视化详解
2017/12/13 Python
python+django+sql学生信息管理后台开发
2018/01/11 Python
单链表反转python实现代码示例
2018/02/08 Python
详解python中sort排序使用
2019/03/23 Python
Python后台开发Django的教程详解(启动)
2019/04/08 Python
对django 2.x版本中models.ForeignKey()外键说明介绍
2020/03/30 Python
Python爬虫谷歌Chrome F12抓包过程原理解析
2020/06/04 Python
英国著名书店:Foyles
2018/12/01 全球购物
Jones New York官网:美国女装品牌,受白领女性欢迎
2019/11/26 全球购物
爱岗敬业演讲稿范文
2014/01/14 职场文书
物业公司的岗位任命书
2014/06/06 职场文书
群众路线教育实践活动的心得体会
2014/09/03 职场文书
离婚协议书格式
2014/11/21 职场文书
三下乡活动心得体会
2016/01/23 职场文书
基于python的matplotlib制作双Y轴图
2021/04/20 Python