1. <?php
  2. /**
  3. @DB Operates For PDO
  4. @author:MeeeeN
  5. @date:2015-10-22 22:40:32
  6. **/
  7. //定义数据库信息
  8. header("Content-type:text/html; charset=utf-8");
  9. define('DB_HOST', 'localhost');
  10. define('DB_USER', 'root');
  11. define('DB_PWD', '');
  12. define('DB_NAME', 'lesson');
  13. class DBPDO {
  14. private static $instance;
  15. public $dsn;
  16. public $dbuser;
  17. public $dbpwd;
  18. public $sth;
  19. public $dbh;
  20. //初始化
  21. function __construct() {
  22. $this->dsn = 'mysql:host='.DB_HOST.';dbname='.DB_NAME;
  23. $this->dbuser = DB_USER;
  24. $this->dbpwd = DB_PWD;
  25. $this->connect();
  26. $this->dbh->query("SET NAMES 'UTF8'");
  27. $this->dbh->query("SET TIME_ZONE = '+8:00'");
  28. }
  29. //连接数据库
  30. public function connect() {
  31. try {
  32. $this->dbh = new PDO($this->dsn, $this->dbuser, $this->dbpwd);
  33. }
  34. catch(PDOException $e) {
  35. exit('连接失败:'.$e->getMessage());
  36. }
  37. }
  38. //获取表字段
  39. public function getFields($table='vista_order') {
  40. $this->sth = $this->dbh->query("DESCRIBE $table");
  41. $this->getPDOError();
  42. $this->sth->setFetchMode(PDO::FETCH_ASSOC);
  43. $result = $this->sth->fetchAll();
  44. $this->sth = null;
  45. return $result;
  46. }
  47. //插入数据
  48. public function insert($sql) {
  49. if($this->dbh->exec($sql)) {
  50. $this->getPDOError();
  51. return $this->dbh->lastInsertId();
  52. }
  53. return false;
  54. }
  55. //删除数据
  56. public function delete($sql) {
  57. if(($rows = $this->dbh->exec($sql)) > 0) {
  58. $this->getPDOError();
  59. return $rows;
  60. }
  61. else {
  62. return false;
  63. }
  64. }
  65. //更改数据
  66. public function update($sql) {
  67. if(($rows = $this->dbh->exec($sql)) > 0) {
  68. $this->getPDOError();
  69. return $rows;
  70. }
  71. return false;
  72. }
  73. //获取数据
  74. public function select($sql) {
  75. $this->sth = $this->dbh->query($sql);
  76. $this->getPDOError();
  77. $this->sth->setFetchMode(PDO::FETCH_ASSOC);
  78. $result = $this->sth->fetchAll();
  79. $this->sth = null;
  80. return $result;
  81. }
  82. //获取数目
  83. public function count($sql) {
  84. $count = $this->dbh->query($sql);
  85. $this->getPDOError();
  86. return $count->fetchColumn();
  87. }
  88. //获取PDO错误信息
  89. private function getPDOError() {
  90. if($this->dbh->errorCode() != '00000') {
  91. $error = $this->dbh->errorInfo();
  92. exit($error[2]);
  93. }
  94. }
  95. //关闭连接
  96. public function __destruct() {
  97. $this->dbh = null;
  98. }
  99. }
  100. //eg: an example for operate select
  101. $test = new DBPDO;
  102. $sql = "SELECT * FROM `vista_order` WHERE `id`!=100 ";
  103. $rs = $test->select($sql);
  104. print_r($rs);
  105. ?>

这是之前研究了一段时间pdo后所写出来的一个pdo数据库相关操作类(比较懒,一直没更新博客),参考了一些网上的相关文章,但是感觉很多要么写得有错误,要么很啰嗦,所以自己搞了个,其实本来我是一直是用MySQL类连接的,但是升级了PHP版本后发现不支持mysql方式连接了,又感觉mysqli比较啰嗦,所以索性改为用pdo,其实基本功能来说的话,这个类中construct,connection,destruct三个function就足够了,不过方便快速使用的话还是多写了一些function,个人感觉这个类的可移植性还是蛮高的,最后有使用的例子,基本上引用DBPDO类之后,只要自己写好sql语句,增删改查就都可以实现了

来源:http://blog.csdn.net/meeeen7/article/details/52136474

一个关于php使用pdo方式进行数据库连接和处理的类相关推荐

  1. php mysql 替换 pdo,php操作MySQL数据库之PDO方式

    这篇文章主要介绍了关于php操作MySQL数据库之PDO方式 ,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下基本使用 1)连接数据库$pdo = new PDO("mysql ...

  2. java提交数据到另一个页面_JS实现把一个页面层数据传递到另一个页面的两种方式...

    由于之前面试,被问到过此问题,所以今天特意整理了一下.由于自己技术水平有限,若存在错误,欢迎提出批评. 本博客整理了两种方式从一个页面层向另一个页面层传递参数. 一. 通过cookie方式 1. 传递 ...

  3. get到一个生气后的牵手方式!太可爱了

     1  公司新聘的出纳,大家看看尽不尽职?  2  柯基:腿长有啥用啊  3  男友力爆表的小螃蟹  4  一滴水的下落,原来如此有条有理  5  内容太过真实  6  get到一个生气后的牵手方式 ...

  4. 刚开始进入一个行业,最佳的方式不是创新

    1. 对于绝大多数人来说,刚开始进入一个行业,最佳的方式不是创新,而是复制头部玩家成熟的模式,以保证自己能够在行业理解.团队结构.技术运营等能力上迅速度过冷启动期.所以每一个互联网人,都应该有分析项目 ...

  5. 需求:定义老师和学生类,然后写代码测试;最后找到老师类和学生类当中的共性内容,抽出一个父类,用继承的方式改写代码,并进行测试

    需求:定义老师和学生类,然后写代码测试;最后找到老师类和学生类当中的共性内容,抽出一个父类 ,用继承的方式改写代码,并进行测试 思路: 1. 定义老师类(姓名,年龄,教书()) 2. 定义学生类(姓名 ...

  6. 下载一个电影,普通下载方式和utorrent方式,速度为什么差这么多?原理是什么?

    下载一个电影,普通下载方式和utorrent方式,速度为什么差这么多?原理是什么? 原因是:utorrent方式是将一个电影分成了n块,而上传的人越多,你下载速度越快. 举例子: 需要搞清楚的一点是, ...

  7. python 遍历字符串的每一个字符的4种方式

    python遍历字符串中的每一个字符有4种方式: 1. for in :2.iter内置函数:3.内置函数range()或xrange():4. enumerate "for in" ...

  8. Java 创建一个线程的三种方式

    Java 创建一个线程的三种方式 更多内容,点击了解: https://how2j.cn/k/thread/thread-start/353.html 创建多线程有3种方式,分别是继承线程类,实现Ru ...

  9. 多线程系列教材 (一)- Java 创建一个线程的三种方式

    多线程即在同一时间,可以做多件事情. 创建多线程有3种方式,分别是继承线程类,实现Runnable接口,匿名类 步骤1:线程概念 步骤2:创建多线程-继承线程类 步骤3:创建多线程-实现Runnabl ...

最新文章

  1. 求求你别再用 System.out.println 了!!
  2. 用于机器人导航辅助的6自由度姿态估计的平面辅助视觉惯性里程计
  3. vc连接数据库,对数据的基本操作
  4. PathComposePathEffectView 使用
  5. 如何恢复ORACLE数据(冷备份)
  6. 前端随笔整理[5.14]
  7. 计算机科学 在职双证,计算机专业在职研究生如何获得双证?
  8. Maven 强制导入jar包
  9. 【C语言进阶深度学习记录】二十八 数组指针与指针数组的分析
  10. Python中矩阵库Numpy基本操作
  11. [开源应用]利用HTTPHandler+resumableJs+HTML5实现拖拽上传[大]文件
  12. Power BI统一报表平台演示环境发布
  13. docker技术之基本命令
  14. 操作系统 chapter1 操作系统概述
  15. CsharpVB教程下载
  16. 【CUDA编程】nsight compute和nsight system的使用
  17. LSTM实现情感分类
  18. php无刷新分页插件,帝国cms增加Ajax加载更多功能,无刷新Ajax表分页插件使用说明_励翔科技帝国cms开发中心...
  19. 红米note5解锁教程_红米Note5人脸解锁怎么设置 红米Note5人脸解锁设置教程
  20. Java环境变量的配置与介绍

热门文章

  1. linux 如何让.开头的文件不隐藏_如何使用 BusyBox 制作Linux最小文件系统
  2. oracle表空间,角色,权限,表,索引,序列号,视图,同义词,约束条件,存储函数和过程,常用数据字典,基本数据字典信息,查看VGA信息,维护表空间,创建表空间等信息
  3. 检索数据_6_过滤记录结合使用别名
  4. 关键点检测算法(一)总体介绍
  5. Qt学习笔记之类继承关系图
  6. Caffe学习系列(17):模型各层数据和参数可视化
  7. Ubuntu 16.04卸载CUDA 6.5和安装CUDA 8.0
  8. Linux驱动编程 step-by-step (三) 字符设备中 重要的数据结构
  9. 区间贪心算法-——活动安排问题
  10. 金融行业容器平台落地路径:敏捷响应业务更迭