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&amp;mysql(四)
Oct 09 PHP
PHP分页显示制作详细讲解
Dec 05 PHP
在Windows下编译适用于PHP 5.2.12及5.2.13的eAccelerator.dll(附下载)
May 04 PHP
php错误、异常处理机制(补充)
May 07 PHP
PHP数组无限分级数据的层级化处理代码
Dec 29 PHP
探讨Hessian在PHP中的使用分析
Jun 13 PHP
查找php配置文件php.ini所在路径的二种方法
May 26 PHP
PDO预处理语句PDOStatement对象使用总结
Nov 20 PHP
PHP常用工具类大全附全部代码下载
Dec 07 PHP
AES加解密在php接口请求过程中的应用示例
Oct 26 PHP
Laravel使用scout集成elasticsearch做全文搜索的实现方法
Nov 30 PHP
PHP简单验证码功能机制实例详解
Mar 27 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
discuz论坛 用户登录 后台程序代码
2008/11/27 PHP
利用curl抓取远程页面内容的示例代码
2013/07/23 PHP
PHP实现生成唯一会员卡号
2015/08/24 PHP
php实现smarty模板无限极分类的方法
2015/12/07 PHP
php加密解密字符串示例
2016/10/13 PHP
PHP+ajax实现上传、删除、修改单张图片及后台处理逻辑操作详解
2020/02/12 PHP
做网页的一些技巧
2007/02/01 Javascript
jQuery html()等方法介绍
2009/11/18 Javascript
多浏览器兼容性比较好的复制到剪贴板的js代码
2011/10/09 Javascript
纯javascript实现的小游戏《Flappy Pig》实例
2015/07/27 Javascript
全系IE支持Bootstrap的解决方法
2015/10/19 Javascript
jquery关于事件冒泡和事件委托的技巧及阻止与允许事件冒泡的三种实现方法
2015/11/27 Javascript
AngularJS实现表单手动验证和表单自动验证
2015/12/09 Javascript
AngularJS基础 ng-mousemove 指令简单示例
2016/08/02 Javascript
Node.js操作redis实现添加查询功能
2017/05/25 Javascript
详解react-redux插件入门
2018/04/19 Javascript
JQuery常见节点操作实例分析
2019/05/15 jQuery
原生JS利用transform实现banner的无限滚动示例代码
2020/06/15 Javascript
利用python实现xml与数据库读取转换的方法
2017/06/17 Python
python实现beta分布概率密度函数的方法
2019/07/08 Python
python爬虫解决验证码的思路及示例
2019/08/01 Python
Python (Win)readline和tab补全的安装方法
2019/08/27 Python
CSS3结构性伪类选择器九种写法
2012/04/18 HTML / CSS
CSS3过渡transition效果实例介绍
2016/05/03 HTML / CSS
SOKOLOV官网:俄罗斯珠宝首饰品牌
2021/01/02 全球购物
外语学院毕业生的自我鉴定
2013/11/28 职场文书
护理专业毕业生自荐信
2014/06/15 职场文书
学校创先争优活动总结
2014/08/28 职场文书
2014年质量管理工作总结
2014/12/01 职场文书
员工开除通知书
2015/04/25 职场文书
2015年库房工作总结
2015/04/30 职场文书
小平您好观后感
2015/06/09 职场文书
节水宣传标语口号
2015/12/26 职场文书
pandas 操作 Excel操作总结
2021/03/31 Python
Python利用capstone实现反汇编
2022/04/06 Python
Spring Security动态权限的实现方法详解
2022/06/16 Java/Android