自写的利用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加密解密函数代码
Jun 19 PHP
修改apache配置文件去除thinkphp url中的index.php
Jan 17 PHP
PHP英文字母大小写转换函数小结
May 03 PHP
linux使用crontab实现PHP执行计划定时任务
May 10 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(二)
Jun 23 PHP
PHP文件生成的图片无法使用CDN缓存的解决方法
Jun 20 PHP
php unicode编码和字符串互转的方法
Aug 12 PHP
php生成网页桌面快捷方式
May 05 PHP
微信接口生成带参数的二维码
Jul 31 PHP
PHP数据库操作三:redis用法分析
Aug 16 PHP
Yii框架学习笔记之session与cookie简单操作示例
Apr 30 PHP
PHP实现15位身份证号转18位的方法分析
Oct 16 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调用dll的实例操作动画与代码分享
2012/08/14 PHP
探讨:web上存漏洞及原理分析、防范方法
2013/06/29 PHP
PHP读取mssql json数据中文乱码的解决办法
2016/04/11 PHP
thinkphp 字母函数详解T/I/N/D/M/A/R/U
2017/04/03 PHP
php写一个函数,实现扫描并打印出自定目录下(含子目录)所有jpg文件名
2017/05/26 PHP
Javascript中call与apply的学习笔记
2014/09/22 Javascript
简介JavaScript中strike()方法的使用
2015/06/08 Javascript
纯JavaScript实现的分页插件实例
2015/07/14 Javascript
jQuery获取字符串中出现最多的数
2016/02/22 Javascript
AngularJS ng-app 指令实例详解
2016/07/30 Javascript
JS中对数组元素进行增删改移的方法总结
2016/12/15 Javascript
Vue.js 插件开发详解
2017/03/29 Javascript
js实现网页的两个input标签内的数值加减(示例代码)
2017/08/15 Javascript
详解Vue用自定义指令完成一个下拉菜单(select组件)
2017/10/31 Javascript
使用Vue构建可重用的分页组件
2018/03/26 Javascript
30分钟快速入门掌握ES6/ES2015的核心内容(下)
2018/04/18 Javascript
详解Vue+axios+Node+express实现文件上传(用户头像上传)
2018/08/10 Javascript
浅谈js闭包理解
2019/04/01 Javascript
js 实现 list转换成tree的方法示例(数组到树)
2019/08/18 Javascript
vue 使用class创建和清除水印的示例代码
2020/12/25 Vue.js
Python 开发Activex组件方法
2009/11/08 Python
深入学习python的yield和generator
2016/03/10 Python
Python实现优先级队列结构的方法详解
2016/06/02 Python
python使用super()出现错误解决办法
2017/08/14 Python
Python使用post及get方式提交数据的实例
2019/01/24 Python
Python Django基础二之URL路由系统
2019/07/18 Python
python实现一个函数版的名片管理系统过程解析
2019/08/27 Python
python pyenv多版本管理工具的使用
2019/12/23 Python
Python DES加密实现原理及实例解析
2020/07/17 Python
Square Off美国/加拿大:世界上最聪明的国际象棋棋盘
2018/12/06 全球购物
高中毕业自我鉴定
2013/12/13 职场文书
内衣营销方案
2014/03/15 职场文书
仓库统计员岗位职责
2015/04/14 职场文书
公司规章制度范本
2015/08/03 职场文书
Python中如何处理常见报错
2022/01/18 Python
Win10 heic文件怎么打开 ? Win10 heic文件打开教程
2022/04/06 数码科技