自写的利用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 模板语句分析及知识技巧
Aug 21 PHP
php运行出现Call to undefined function curl_init()的解决方法
Nov 02 PHP
解析PHP中数组元素升序、降序以及重新排序的函数
Jun 20 PHP
php使用CURL不依赖COOKIEJAR获取COOKIE的方法
Jun 17 PHP
PHP7.0安装笔记整理
Aug 28 PHP
php获取汉字拼音首字母的方法
Oct 21 PHP
PHP根据session与cookie用户登录状态操作类的代码
May 13 PHP
深入理解PHP中的empty和isset函数
May 26 PHP
php微信公众平台开发(四)回复功能开发
Dec 06 PHP
php获取给定日期相差天数的方法分析
Feb 20 PHP
php解析mht文件转换成html的实例
Mar 13 PHP
在laravel-admin中列表中禁止某行编辑、删除的方法
Oct 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 Socket写的POP3类
2013/10/30 PHP
PHP 读取和编写 XML
2014/11/19 PHP
Laravel使用memcached缓存对文章增删改查进行优化的方法
2016/10/08 PHP
使用php自动备份数据库表的实现方法
2017/07/28 PHP
浅析PHP类的反射来实现依赖注入过程
2018/02/06 PHP
php文件上传原理与实现方法详解
2019/12/20 PHP
Javascript调用C#代码
2011/01/17 Javascript
基于Jquery的仿照flash放大图片效果代码
2011/03/16 Javascript
JS去除数组重复值的五种不同方法
2013/09/06 Javascript
基于Jquery实现键盘按键监听
2014/05/11 Javascript
Javascript让DEDECMS告别手写Tag
2014/09/01 Javascript
javascript高级编程之函数表达式 递归和闭包函数
2015/11/29 Javascript
AngularJS directive返回对象属性详解
2016/03/28 Javascript
快速实现jQuery多级菜单效果
2017/02/01 Javascript
JavaScript正则表达式简单实用实例
2017/06/23 Javascript
JS实现基于拖拽改变物体大小的方法
2018/01/23 Javascript
JS删除String里某个字符的方法
2021/01/06 Javascript
JS Math对象与Math方法实例小结
2019/07/05 Javascript
浅析vue-cli3配置webpack-bundle-analyzer插件【推荐】
2019/10/23 Javascript
vue单应用在ios系统中实现微信分享功能操作
2020/09/07 Javascript
python机器学习之决策树分类详解
2017/12/20 Python
Python实现随机创建电话号码的方法示例
2018/12/07 Python
python 获得任意路径下的文件及其根目录的方法
2019/02/16 Python
Python3 修改默认环境的方法
2019/02/16 Python
python定时按日期备份MySQL数据并压缩
2019/04/19 Python
python  ceiling divide 除法向上取整(或小数向上取整)的实例
2019/12/27 Python
Python socket连接中的粘包、精确传输问题实例分析
2020/03/24 Python
使用css实现android系统的loading加载动画
2019/07/25 HTML / CSS
煤矿班组长岗位职责
2013/12/29 职场文书
宿舍保安职务说明书
2014/02/25 职场文书
中班幼儿评语大全
2014/04/30 职场文书
做一个有道德的人演讲稿
2014/05/14 职场文书
模具专业自荐信
2014/05/29 职场文书
悬空寺导游词
2015/02/05 职场文书
使用nginx配置访问wgcloud的方法
2021/06/26 Servers
css3手动实现pc端横向滚动
2022/06/21 HTML / CSS