自写的利用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 相关文章推荐
海河写的 Discuz论坛帖子调用js的php代码
Aug 23 PHP
ThinkPHP自动验证失败的解决方法
Jun 09 PHP
PHP导出EXCEL快速开发指南--PHPEXCEL的使用详解
Jun 03 PHP
用mysql_fetch_array()获取当前行数据的方法详解
Jun 05 PHP
typecho插件编写教程(二):写一个新插件
May 28 PHP
一个PHP实现的轻量级简单爬虫
Jul 08 PHP
解读PHP中的垃圾回收机制
Aug 10 PHP
PHP浮点比较大小的方法
Feb 14 PHP
PHP实现获取并生成数据库字典的方法
May 04 PHP
PHP导出带样式的Excel示例代码
Aug 28 PHP
PHP制作登录异常ip检测功能的实例代码
Nov 16 PHP
PHP实现在数据库百万条数据中随机获取20条记录的方法
Apr 19 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
在WordPress中使用wp-cron插件来设置定时任务
2015/12/10 PHP
PHP中的empty、isset、isnull的区别与使用实例
2019/03/22 PHP
javascript对select标签的控制(option选项/select)
2013/01/31 Javascript
Jquery使用css方法改变样式实例
2015/05/18 Javascript
使用JQuery在线制作ppt并在线演示源码特效
2015/09/08 Javascript
jQuery自适应轮播图插件Swiper用法示例
2016/08/24 Javascript
基于Javascript实现的不重复ID的生成器
2016/12/25 Javascript
在一个页面重复使用一个js函数的方法详解
2016/12/26 Javascript
jQuery文字轮播特效
2017/02/12 Javascript
canvas实现十二星座星空图
2017/02/14 Javascript
nodejs中解决异步嵌套循环和循环嵌套异步的问题
2017/07/12 NodeJs
详解JavaScript中的六种错误类型
2017/09/21 Javascript
通过源码分析Vue的双向数据绑定详解
2017/09/24 Javascript
jQuery响应滚动条事件功能示例
2017/10/14 jQuery
基于Vue 2.0的模块化前端 UI 组件库小结
2017/12/21 Javascript
vue 使用ref 让父组件调用子组件的方法
2018/02/08 Javascript
JavaScript函数定义方法实例详解
2019/03/05 Javascript
node学习笔记之读写文件与开启第一个web服务器操作示例
2019/05/29 Javascript
微信小程序图片加载失败时替换为默认图片的方法
2019/12/09 Javascript
python 给DataFrame增加index行名和columns列名的实现方法
2018/06/08 Python
pycharm+PyQt5+python最新开发环境配置(踩坑)
2019/02/11 Python
pytorch实现seq2seq时对loss进行mask的方式
2020/02/18 Python
python实现吃苹果小游戏
2020/03/21 Python
如何用Python 实现全连接神经网络(Multi-layer Perceptron)
2020/10/15 Python
python代码实现图书管理系统
2020/11/30 Python
利用CSS3实现开门效果实例源码
2016/08/22 HTML / CSS
专门出售各种儿童读物的网站:Put Me In The Story
2016/08/07 全球购物
巴西葡萄酒销售网站:Wine.com.br
2017/11/07 全球购物
Java面试题:请说出如下代码的输出结果
2013/04/22 面试题
学生生病请假条范文
2014/02/16 职场文书
企业安全生产演讲稿
2014/05/09 职场文书
七一活动主持词
2015/06/29 职场文书
MySQL EXPLAIN输出列的详细解释
2021/05/12 MySQL
零基础学java之方法的定义与调用详解
2022/04/10 Java/Android
Java 轮询锁使用时遇到问题
2022/05/11 Java/Android
Nginx 502 bad gateway错误解决的九种方案及原因
2022/08/14 Servers