PHP使用PDO 连接与连接管理操作实例分析


Posted in PHP onApril 21, 2020

本文实例讲述了PHP使用PDO 连接与连接管理操作。分享给大家供大家参考,具体如下:

连接是通过创建 PDO 基类的实例而建立的。不管使用哪种驱动程序,都是用 PDO 类名。

构造函数接收用于指定数据库源(所谓的 DSN)以及可能还包括用户名和密码(如果有的话)的参数。

连接到 MySQL

<?php
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
?>

如果有任何连接错误,将抛出一个 PDOException 异常对象。如果想处理错误状态,可以捕获异常,

或者选择留给通过 set_exception_handler()设置的应用程序全局异常处理程序。

处理连接错误

<?php
try {
  $dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
  foreach($dbh->query('SELECT * from FOO') as $row) {
    print_r($row);
  }
  $dbh = null;
} catch (PDOException $e) {
  print "Error!: " . $e->getMessage() . "<br/>";
  die();
}
?>

连接数据成功后,返回一个 PDO 类的实例给脚本,

此连接在 PDO 对象的生存周期中保持活动。

要想关闭连接,需要销毁对象以确保所有剩余到它的引用都被删除,可以赋一个 NULL 值给对象变量。

如果不明确地这么做,PHP 在脚本结束时会自动关闭连接。

 关闭一个连接

<?php
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
// 在此使用连接

// 现在运行完成,在此关闭连接
$dbh = null;
?>

很多 web 应用程序通过使用到数据库服务的持久连接获得好处。持久连接在脚本结束后不会被关闭,且被缓存,

当另一个使用相同凭证的脚本连接请求时被重用。持久连接缓存可以避免每次脚本需要与数据库回话时建立一个新连接的开销,从而让 web 应用程序更快。

持久化连接

<?php
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass, array(
  PDO::ATTR_PERSISTENT => true
));
?>

如果想使用持久连接,必须在传递给 PDO 构造函数的驱动选项数组中设置 PDO::ATTR_PERSISTENT 。

如果是在对象初始化之后用 PDO::setAttribute() 设置此属性,则驱动程序将不会使用持久连接。

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
用PHP调用Oracle存储过程
Oct 09 PHP
聊天室php&amp;mysql(二)
Oct 09 PHP
php和js交互一例-PHP教程,PHP应用
Jan 03 PHP
一贴学会PHP 新手入门教程
Aug 03 PHP
php关于array_multisort多维数组排序的使用说明
Jan 04 PHP
PHP缓存技术的使用说明
Aug 06 PHP
php格式化日期实例分析
Nov 12 PHP
ThinkPHP中使用ajax接收json数据的方法
Dec 18 PHP
PHP处理postfix邮件内容的方法
Jun 16 PHP
Ajax PHP JavaScript MySQL实现简易无刷新在线聊天室
Aug 17 PHP
轻松实现php文件上传功能
Feb 17 PHP
PHP7 新增常量
Mar 09 PHP
PHP实现随机发放扑克牌
Apr 21 #PHP
PHP 构造函数和析构函数原理与用法分析
Apr 21 #PHP
PHP 对象继承原理与简单用法示例
Apr 21 #PHP
php判断某个方法是否存在函数function_exists (),method_exists()与is_callable()区别与用法解析
Apr 20 #PHP
ThinkPHP3.1.2 使用cli命令行模式运行的方法
Apr 14 #PHP
Laravel 框架控制器 Controller原理与用法实例分析
Apr 14 #PHP
Laravel 框架路由原理与路由访问实例分析
Apr 14 #PHP
You might like
adodb与adodb_lite之比较
2006/12/31 PHP
PHP COOKIE设置为浏览器进程
2009/06/21 PHP
php数组函数序列之asort() - 对数组的元素值进行升序排序,保持索引关系
2011/11/02 PHP
php输出金字塔的2种实现方法
2014/12/16 PHP
php遍历CSV类实例
2015/04/14 PHP
web基于浏览器的本地存储方法应用
2012/11/27 Javascript
JS完成代码前最好对其做5件事
2013/04/07 Javascript
Jquery中LigerUi的弹出编辑框(实现方法)
2013/07/09 Javascript
js密码强度校验
2015/11/10 Javascript
深入学习jQuery Validate表单验证(二)
2016/01/18 Javascript
jQuery 更改checkbox的状态,无效的解决方法
2016/07/22 Javascript
js创建数组的简单方法
2016/07/27 Javascript
Vue.js实现模拟微信朋友圈开发demo
2017/04/20 Javascript
详解ElementUI之表单验证、数据绑定、路由跳转
2017/06/21 Javascript
vue 引入公共css文件的简单方法(推荐)
2018/01/20 Javascript
chosen实现省市区三级联动
2018/08/16 Javascript
jQuery 点击获取验证码按钮及倒计时功能
2018/09/20 jQuery
如何使用VuePress搭建一个类型element ui文档
2019/02/14 Javascript
详解ES7 Decorator 入门解析
2019/02/18 Javascript
Python3多线程爬虫实例讲解代码
2018/01/05 Python
Tensorflow之Saver的用法详解
2018/04/23 Python
Python sklearn KFold 生成交叉验证数据集的方法
2018/12/11 Python
python给微信好友定时推送消息的示例
2019/02/20 Python
python反编译学习之字节码详解
2019/05/19 Python
使用python实现希尔、计数、基数基础排序的代码
2019/12/25 Python
Python如何实现线程间通信
2020/07/30 Python
CSS3制作炫酷带方向感应的鼠标滑过图片3D动画
2016/03/16 HTML / CSS
HTML5 Canvas玩转酷炫大波浪进度图效果实例(附demo)
2016/12/14 HTML / CSS
有影响力的人、名人和艺术家的官方商品:Represent
2019/11/26 全球购物
防沙治沙典型材料
2014/05/07 职场文书
党的群众路线教育实践活动个人对照检查材料范文
2014/09/25 职场文书
优秀共产党员推荐材料
2014/12/18 职场文书
家长反馈意见及建议
2015/06/03 职场文书
步步惊心观后感
2015/06/12 职场文书
结婚喜宴祝酒词
2015/08/10 职场文书
Redis数据同步之redis shake的实现方法
2022/04/21 Redis