自写的利用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模板引擎SMARTY
Oct 09 PHP
在mysql数据库原有字段后增加新内容
Nov 26 PHP
分割GBK中文遭遇乱码的解决方法
Aug 09 PHP
php的sprintf函数的用法 控制浮点数格式
Feb 14 PHP
php循环创建目录示例分享(php创建多级目录)
Mar 04 PHP
PHP二维数组排序的3种方法和自定义函数分享
Apr 09 PHP
PHP实现定时执行任务的方法
Oct 05 PHP
PHP实现查询两个数组中不同元素的方法
Feb 23 PHP
PHP使用自定义方法实现数组合并示例
Jul 07 PHP
php workerman定时任务的实现代码
Dec 23 PHP
php+mysql开发的最简单在线题库(在线做题系统)完整案例
Mar 30 PHP
php中数组最简单的使用方法
Dec 27 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 正则判断中文UTF-8或GBK的思路及具体实现
2013/11/26 PHP
php页面函数设置超时限制的方法
2014/12/01 PHP
PHP Cookie学习笔记
2016/08/23 PHP
深入理解JavaScript系列(6) 强大的原型和原型链
2012/01/15 Javascript
网页编辑器ckeditor和ckfinder配置步骤分享
2012/05/24 Javascript
JS判断是否360安全浏览器极速内核的方法
2015/01/29 Javascript
解决node-webkit 不支持html5播放mp4视频的方法
2015/03/11 Javascript
jQuery表单验证功能实例
2015/08/28 Javascript
快速解决jquery.touchSwipe左右滑动和垂直滚动条冲突
2016/04/15 Javascript
JS仿淘宝搜索框用户输入事件的实现
2017/06/19 Javascript
Angular2关于@angular/cli默认端口号配置的问题
2017/07/15 Javascript
关于在LayUI中使用AJAX提交巨坑记录
2019/10/25 Javascript
javascript设计模式 ? 建造者模式原理与应用实例分析
2020/04/10 Javascript
JS中间件设计模式的深入探讨与实例分析
2020/04/11 Javascript
Vue 构造选项 - 进阶使用说明
2020/08/14 Javascript
node.js 基于 STMP 协议和 EWS 协议发送邮件
2021/02/14 Javascript
wxpython学习笔记(推荐查看)
2014/06/09 Python
跟老齐学Python之重回函数
2014/10/10 Python
Python多进程库multiprocessing中进程池Pool类的使用详解
2017/11/24 Python
Django中cookie的基本使用方法示例
2018/02/03 Python
使用django-crontab实现定时任务的示例
2018/02/26 Python
python实现将json多行数据传入到mysql中使用
2019/12/31 Python
python求numpy中array按列非零元素的平均值案例
2020/06/08 Python
Keras 在fit_generator训练方式中加入图像random_crop操作
2020/07/03 Python
美国知名户外用品畅销中心:Sierra Trading Post
2016/07/19 全球购物
英国领先的奢侈品零售商之一:CRUISE
2016/12/02 全球购物
阿提哈德航空官方网站:Etihad Airways
2017/01/06 全球购物
美国温暖商店:The Warming Store
2018/12/15 全球购物
DNA测试:Orig3n
2019/03/01 全球购物
保时捷设计:Porsche Design
2019/03/30 全球购物
NBA欧洲商店(西班牙):NBA Europe Store ES
2019/04/16 全球购物
大学生职业规划论文
2014/01/11 职场文书
观看《周恩来的四个昼夜》思想汇报
2014/09/12 职场文书
2015年酒店服务员工作总结
2015/05/18 职场文书
七年级作文之游记
2019/12/11 职场文书
pycharm无法安装cv2模块问题
2022/05/20 Python