自写的利用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函数(简单整理)
Apr 30 PHP
PHP网站安装程序制作的原理、步骤、注意事项和示例代码
Aug 01 PHP
iis下php mail函数的sendmail配置方法(官方推荐)
Apr 25 PHP
phpExcel导出大量数据出现内存溢出错误的解决方法
Feb 28 PHP
php cli模式学习(PHP命令行模式)
Jun 03 PHP
Twig模板引擎用法入门教程
Jan 20 PHP
使用JavaScript创建新样式表和新样式规则
Jun 14 PHP
用PHP的socket实现客户端到服务端的通信实例详解
Feb 04 PHP
利用PHP实现开心消消乐的算法示例
Oct 12 PHP
PHP join()函数用法与实例讲解
Mar 11 PHP
PHP正则表达式笔记与实例详解
May 09 PHP
Laravel 手动开关 Eloquent 修改器的操作方法
Dec 30 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变量的作用范围实例讲解
2020/12/22 PHP
Javascript模板技术
2007/04/27 Javascript
解析js原生方法创建表格效率测试
2013/07/08 Javascript
jquery改变disabled的boolean状态的三种方法
2013/12/13 Javascript
js window.open弹出新的网页窗口
2014/01/16 Javascript
如何防止回车(enter)键提交表单
2014/05/11 Javascript
js选择并转移导航菜单示例代码
2014/08/19 Javascript
手机号码,密码正则验证
2014/09/04 Javascript
JavaScript编程中容易出BUG的几点小知识
2015/01/31 Javascript
JS去除iframe滚动条的方法
2015/04/01 Javascript
基于JavaScript实现点击页面任何位置返回
2016/08/31 Javascript
微信小程序 progress组件详解及实例代码
2016/10/25 Javascript
微信小程序 生命周期和页面的生命周期详细介绍
2017/01/19 Javascript
利用PM2部署node.js项目的方法教程
2017/05/10 Javascript
JavaScript之Date_动力节点Java学院整理
2017/06/28 Javascript
Node做中转服务器转发接口
2017/10/18 Javascript
微信小程序MUI侧滑导航菜单示例(Popup弹出式,左侧不动,右侧滑动)
2019/01/23 Javascript
element-ui上传一张图片后隐藏上传按钮功能
2019/05/22 Javascript
解决LayUI加上form.render()下拉框和单选以及复选框不出来的问题
2019/09/27 Javascript
Vant 在vue-cli 4.x中按需加载操作
2020/11/05 Javascript
[02:27]《DAC最前线》之附加赛征程
2015/01/29 DOTA
教你用Type Hint提高Python程序开发效率
2016/08/08 Python
一个基于flask的web应用诞生 组织结构调整(7)
2017/04/11 Python
python发qq消息轰炸虐狗好友思路详解(完整代码)
2020/02/15 Python
详解PyQt5信号与槽的几种高级玩法
2020/03/24 Python
用CSS3和table标签实现一个圆形轨迹的动画的示例代码
2019/01/17 HTML / CSS
Roots加拿大官网:加拿大休闲服饰品牌
2016/10/24 全球购物
化学教师教学反思
2014/01/17 职场文书
2014年师德承诺书
2014/05/23 职场文书
委托书范本
2014/09/13 职场文书
会计电算化实训报告
2014/11/04 职场文书
暂停营业通知
2015/04/25 职场文书
教师个人师德工作总结2015
2015/05/12 职场文书
毕业酒会致辞
2015/07/29 职场文书
Mysql排序的特性详情
2021/11/01 MySQL
通过feDisplacementMap和feImage实现水波特效
2022/04/24 HTML / CSS