自写的利用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实现读取和编写XML DOM代码
Apr 07 PHP
php 常用类汇总 推荐收藏
May 13 PHP
PHP新手入门学习方法
May 08 PHP
php正则表达式(regar expression)
Sep 10 PHP
关于PHP内存溢出问题的解决方法
Jun 25 PHP
php连接与操作PostgreSQL数据库的方法
Dec 25 PHP
php编写的抽奖程序中奖概率算法
May 14 PHP
php基于CodeIgniter实现图片上传、剪切功能
May 14 PHP
PHP 将数组打乱 shuffle函数的用法及简单实例
Jun 17 PHP
php array_multisort 对数组进行排序详解及实例代码
Oct 27 PHP
PHP实现的简单sha1加密功能示例
Aug 27 PHP
利用Homestead快速运行一个Laravel项目的方法详解
Nov 14 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判断数据库中的记录是否存在的方法
2014/11/14 PHP
在JavaScript中监听IME键盘输入事件
2011/05/29 Javascript
jquery插件制作 提示框插件实现代码
2012/08/17 Javascript
jQuery对html元素取值与赋值的方法
2013/11/20 Javascript
Jquery动态替换div内容及动态展示的方法
2015/01/23 Javascript
详解JavaScript ES6中的Generator
2015/07/28 Javascript
jQuery自定义动画函数实例详解(附demo源码)
2015/12/10 Javascript
jquery表单验证插件formValidator使用方法
2016/04/01 Javascript
移动端jQuery修正Web页面滑动时div问题的两则实例
2016/05/30 Javascript
indexedDB bootstrap angularjs之 MVC DOMO (应用示例)
2016/06/20 Javascript
jQuery通过ajax快速批量提交表单数据
2016/10/25 Javascript
详解react关于事件绑定this的四种方式
2018/03/09 Javascript
详解如何在Angular优雅编写HTTP请求
2018/12/05 Javascript
vue页面跳转实现页面缓存操作
2020/07/22 Javascript
解决Antd Table组件表头不对齐的问题
2020/10/27 Javascript
[52:12]FNATIC vs Infamous 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
打开电脑上的QQ的python代码
2013/02/10 Python
树莓派中python获取GY-85九轴模块信息示例
2013/12/05 Python
Django中传递参数到URLconf的视图函数中的方法
2015/07/18 Python
Python简单获取自身外网IP的方法
2016/09/18 Python
Python实现插入排序和选择排序的方法
2019/05/12 Python
Python+OpenCV+pyQt5录制双目摄像头视频的实例
2019/06/28 Python
python/Matplotlib绘制复变函数图像教程
2019/11/21 Python
django使用F方法更新一个对象多个对象字段的实现
2020/03/28 Python
Python爬虫:Request Payload和Form Data的简单区别说明
2020/04/30 Python
爬虫代理的cookie如何生成运行
2020/09/22 Python
南非最大的花卉和送礼服务:NetFlorist
2017/09/13 全球购物
英国独特的时尚和生活方式品牌:JOY
2018/03/17 全球购物
责任胜于能力演讲稿
2014/05/20 职场文书
管理提升方案
2014/06/04 职场文书
网上祭先烈心得体会
2014/09/01 职场文书
学习党的群众路线剖析材料
2014/10/09 职场文书
劳动者解除劳动合同通知书
2015/04/16 职场文书
供应商食品安全承诺书
2015/04/29 职场文书
工作表现证明
2015/06/15 职场文书
MySQL 如何限制一张表的记录数
2021/09/14 MySQL