自写的利用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+iframe实现隐藏无刷新上传文件
Feb 10 PHP
PHP面向对象程序设计之类常量用法实例
Aug 20 PHP
php中explode函数用法分析
Nov 15 PHP
PHP框架Laravel的小技巧两则
Feb 10 PHP
php遍历树的常用方法汇总
Jun 18 PHP
thinkphp中多表查询中防止数据重复的sql语句(必看)
Sep 22 PHP
PHP页面跳转实现延时跳转的方法
Dec 10 PHP
详解Yii实现分页的两种方法
Jan 14 PHP
Laravel框架自定义验证过程实例分析
Feb 01 PHP
php使用scandir()函数扫描指定目录下所有文件示例
Jun 08 PHP
PHP使用redis位图bitMap 实现签到功能
Oct 08 PHP
Yii 框架使用Forms操作详解
May 18 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生成Gif图片验证码
2013/10/27 PHP
国产PHP开发框架myqee新手快速入门教程
2014/07/14 PHP
php下Memcached入门实例解析
2015/01/05 PHP
php处理复杂xml数据示例
2016/07/11 PHP
php微信公众平台配置接口开发程序
2016/09/22 PHP
PHP Cli 模式设置进程名称的方法
2019/06/12 PHP
跨浏览器开发经验总结(四) 怎么写入剪贴板
2010/05/13 Javascript
用JS实现一个TreeMenu效果分享
2011/08/28 Javascript
JQuery扩展插件Validate—6 radio、checkbox、select的验证
2011/09/05 Javascript
jquery 模板的应用示例
2013/11/12 Javascript
PHP结合jQuery实现红蓝投票功能特效
2015/07/22 Javascript
javascript实现在下拉列表中显示多级树形菜单的方法
2015/08/12 Javascript
JS实现table表格数据排序功能(可支持动态数据+分页效果)
2016/05/26 Javascript
javascript实现的上下无缝滚动效果
2016/09/19 Javascript
从零学习node.js之express入门(六)
2017/02/25 Javascript
AngularJS的脏检查深入分析
2017/04/22 Javascript
详解Nodejs 通过 fs.createWriteStream 保存文件
2017/10/10 NodeJs
JS中用EL表达式获取上下文参数值的方法
2018/03/28 Javascript
vue项目中引入Sass实例方法
2019/08/27 Javascript
[03:46]DOTA2英雄基础教程 维萨吉
2013/12/11 DOTA
[08:44]DOTA2发布会群星聚首 我们都是刀塔人
2014/03/21 DOTA
使用Python获取Linux系统的各种信息
2014/07/10 Python
python中报错&quot;json.decoder.JSONDecodeError: Expecting value:&quot;的解决
2019/04/29 Python
关于PyTorch源码解读之torchvision.models
2019/08/17 Python
使用tensorboard可视化loss和acc的实例
2020/01/21 Python
Python3实现监控新型冠状病毒肺炎疫情的示例代码
2020/02/13 Python
python对接ihuyi实现短信验证码发送
2020/05/10 Python
Python配置pip国内镜像源的实现
2020/08/20 Python
2014信息技术专业毕业生自我评价
2014/01/17 职场文书
2014年圣诞节寄语
2014/12/08 职场文书
在职人员跳槽求职信
2015/03/20 职场文书
爱国主义教育主题班会
2015/08/13 职场文书
高三数学教学反思
2016/02/18 职场文书
创业计划书之旅游网站
2019/09/06 职场文书
mysql中整数数据类型tinyint详解
2021/12/06 MySQL
一行Python命令实现批量加水印
2022/04/07 Python