自写的利用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 相关文章推荐
php5.3 不支持 session_register() 此函数已启用的解决方法
Nov 12 PHP
ThinkPHP数据操作方法总结
Sep 28 PHP
详解WordPress开发中get_header()获取头部函数的用法
Jan 08 PHP
完美解决phpexcel导出到xls文件出现乱码的问题
Oct 29 PHP
PHP赋值的内部是如何跑的详解
Jan 13 PHP
laravel http 自定义公共验证和响应的方法
Sep 29 PHP
PHP 多进程与信号中断实现多任务常驻内存管理实例方法
Oct 04 PHP
PHP实用小技巧之调用录像的方法
Dec 05 PHP
Thinkphp 框架配置操作之动态配置、扩展配置及批量配置实例分析
May 15 PHP
PHP函数用法详解【初始化、嵌套、内置函数等】
Jun 02 PHP
KindEditor在php环境下上传图片功能集成的方法示例
Jul 20 PHP
PHP的imageTtfText()函数深入详解
Mar 03 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常用代码
2006/11/23 PHP
php通过文件头检测文件类型通用代码类(zip,rar等)
2010/10/19 PHP
ThinkPHP的截取字符串函数无法显示省略号的解决方法
2014/06/25 PHP
php中rename函数用法分析
2014/11/15 PHP
php通过baihui网API实现读取word文档并展示
2015/06/22 PHP
PHP实现防盗链的方法分析
2017/07/25 PHP
Laravel 实现关系模型取出需要的字段
2019/10/10 PHP
从JavaScript的函数重名看其初始化方式
2007/03/08 Javascript
JavaScript 输入框内容格式验证代码
2010/02/11 Javascript
用js写了一个类似php的print_r输出换行功能
2013/02/18 Javascript
JS去除右边逗号的简单方法
2013/07/03 Javascript
javascript实现的闭包简单实例
2015/07/17 Javascript
JS实现带关闭功能的阿里妈妈网站顶部滑出banner工具条代码
2015/09/17 Javascript
Javascript之面向对象--接口
2016/12/02 Javascript
angular仿支付宝密码框输入效果
2017/03/25 Javascript
微信小程序 五星评分的实现实例
2017/08/04 Javascript
jquery对table做排序操作的实例演示
2017/08/10 jQuery
JS switch判断 三目运算 while 及 属性操作代码
2017/09/03 Javascript
vue-cli脚手架config目录下index.js配置文件的方法
2018/03/13 Javascript
Node.js使用cookie保持登录的方法
2018/05/11 Javascript
Egg.js 中 AJax 上传文件获取参数的方法
2018/10/10 Javascript
vue-router 中 meta的用法详解
2019/11/01 Javascript
浅谈Node新版本13.2.0正式支持ES Modules特性
2019/11/25 Javascript
Vue实现验证码功能
2019/12/03 Javascript
Python常用小技巧总结
2015/06/01 Python
Python 用matplotlib画以时间日期为x轴的图像
2019/08/06 Python
Python图像处理库PIL的ImageFilter模块使用介绍
2020/02/26 Python
如何使用pycharm连接Databricks的步骤详解
2020/09/23 Python
举例详解HTML5中使用JSON格式提交表单
2015/06/16 HTML / CSS
Hotels.com南非:酒店预订
2017/11/02 全球购物
商务英语广告词大全
2014/03/18 职场文书
竞选演讲稿范文大全
2014/05/12 职场文书
2014年作风建设心得体会
2014/10/22 职场文书
爱心捐助活动总结
2015/05/09 职场文书
聋哑人盗窃罪辩护词
2015/05/21 职场文书
Python爬虫之爬取某文库文档数据
2021/04/21 Python