自写的利用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 相关文章推荐
如何在WIN2K下安装PHP4.04
Oct 09 PHP
洪恩在线成语词典小偷程序php版
Apr 20 PHP
php实现短信发送代码
Jul 05 PHP
屏蔽PHP默认设置中的Notice警告的方法
May 20 PHP
php强制下载文件函数
Aug 24 PHP
PHP session会话操作技巧小结
Sep 27 PHP
thinkphp中AJAX返回ajaxReturn()方法分析
Dec 06 PHP
详解php用curl调用接口方法,get和post两种方式
Jan 13 PHP
php数值转换时间及时间转换数值用法示例
May 18 PHP
stripos函数知识点实例分享
Feb 11 PHP
PHP+mysql防止SQL注入的方法小结
Apr 27 PHP
ThinkPHP框架结合Ajax实现用户名校验功能示例
Jul 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基于mcrypt_encrypt和mcrypt_decrypt实现字符串加密解密的方法
2016/07/12 PHP
PHP设计模式之装饰器模式定义与用法详解
2018/04/02 PHP
PHP实现的pdo连接数据库并插入数据功能简单示例
2019/03/30 PHP
Yii框架自定义数据库操作组件示例
2019/11/11 PHP
ThinkPHP 框架实现的读取excel导入数据库操作示例
2020/04/14 PHP
多个iframe自动调整大小的问题
2006/09/18 Javascript
不用构造函数(Constructor)new关键字也能实现JavaScript的面向对象
2013/01/11 Javascript
javascript中数组的冒泡排序使用示例
2013/12/18 Javascript
js实现点击添加一个input节点
2014/12/05 Javascript
AngularJS中使用HTML5手机摄像头拍照
2016/02/22 Javascript
JavaScript头像上传插件源码分享
2016/03/29 Javascript
微信小程序中使元素占满整个屏幕高度实现方法
2016/12/14 Javascript
JavaScript用二分法查找数据的实例代码
2017/06/17 Javascript
vue.js根据代码运行环境选择baseurl的方法
2018/02/28 Javascript
vue 使用eventBus实现同级组件的通讯
2018/03/02 Javascript
vue 组件使用中的一些细节点
2018/04/25 Javascript
使用JavaScript获取Django模板指定键值数据
2020/05/27 Javascript
python中关于时间和日期函数的常用计算总结(time和datatime)
2013/03/08 Python
python3利用venv配置虚拟环境及过程中的小问题小结
2018/08/01 Python
Python的Django框架实现数据库查询(不返回QuerySet的方法)
2020/05/19 Python
python中adb有什么功能
2020/06/07 Python
Python-openCV开运算实例
2020/07/05 Python
python 基于selenium实现鼠标拖拽功能
2020/12/24 Python
Python绘制K线图之可视化神器pyecharts的使用
2021/03/02 Python
纯CSS3编写的的精美动画进度条(无flash/无图像/无脚本/附源码)
2013/01/07 HTML / CSS
css3针对移动端卡顿问题的解决(动画性能优化)
2020/02/14 HTML / CSS
AE美国鹰日本官方网站: American Eagle Outfitters
2016/12/10 全球购物
斯巴达比赛商店:Spartan Race
2019/01/08 全球购物
信号量和自旋锁的区别?如何选择使用?
2015/09/08 面试题
邮政员工辞职信
2014/01/16 职场文书
史学专业毕业生求职信
2014/05/09 职场文书
金融与证券专业求职信
2014/06/22 职场文书
高中升旗仪式演讲稿
2014/09/09 职场文书
2014年基层党建工作总结
2014/11/11 职场文书
2019通用版劳动合同范本!
2019/07/11 职场文书
python实现双向链表原理
2022/05/25 Python