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的ajax框架xajax入门与试用介绍
Dec 19 PHP
获取php页面执行时间,数据库读写次数,函数调用次数等(THINKphp)
Jun 03 PHP
用Json实现PHP与JavaScript间数据交换的方法详解
Jun 20 PHP
PHP常量使用的几个需要注意的地方(谨慎使用PHP中的常量)
Sep 12 PHP
PHP随机生成唯一HASH值自定义函数
Apr 20 PHP
PHP传参之传值与传址的区别
Apr 24 PHP
YII使用url组件美化管理的方法
Dec 28 PHP
Smarty模板变量调节器用法分析
May 23 PHP
PHP实现基于栈的后缀表达式求值功能
Nov 10 PHP
php如何比较两个浮点数是否相等详解
Feb 12 PHP
PHP htmlspecialchars()函数用法与实例讲解
Mar 08 PHP
Yii2框架加载css和js文件的方法分析
May 25 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
用PHP连mysql和oracle数据库性能比较
2006/10/09 PHP
PHP简洁函数小结
2011/08/12 PHP
php function用法如何递归及return和echo区别
2014/03/07 PHP
php获取表单中多个同名input元素的值
2014/03/20 PHP
PHP验证码生成原理和实现
2016/01/24 PHP
javascript flash下fromCharCode和charCodeAt方法使用说明
2008/01/12 Javascript
javascript 字符 Escape,encodeURI,encodeURIComponent
2009/07/09 Javascript
js 获取子节点函数 (兼容FF与IE)
2010/04/18 Javascript
远离JS灾难css灾难之 js私有函数和css选择器作为容器
2011/12/11 Javascript
仅IE支持clearAttributes/mergeAttributes方法使用介绍
2012/05/04 Javascript
javascript游戏开发之《三国志曹操传》零部件开发(一)让静态人物动起来
2013/01/23 Javascript
JavaScript调用堆栈及setTimeout使用方法深入剖析
2013/02/16 Javascript
html+javascript实现可拖动可提交的弹出层对话框效果
2013/08/05 Javascript
jquery实现页面图片等比例放大缩小功能
2014/02/12 Javascript
javascript里使用php代码实例
2014/12/13 Javascript
jQuery实现的背景动态变化导航菜单效果
2015/08/24 Javascript
JS模拟实现Select效果代码
2015/09/24 Javascript
javascript关于继承解析
2016/05/10 Javascript
JavaScript实现获取远程的html到当前页面中
2017/03/26 Javascript
vue二级路由设置方法
2018/02/09 Javascript
React Form组件的实现封装杂谈
2018/05/07 Javascript
Rollup处理并打包JS文件项目实例代码
2018/05/31 Javascript
Vue+Element UI+Lumen实现通用表格分页功能
2019/02/02 Javascript
ES6 class的应用实例分析
2019/06/27 Javascript
vue自定义正在加载动画的例子
2019/11/14 Javascript
python使用opencv进行人脸识别
2017/04/07 Python
Python 实现购物商城,含有用户入口和商家入口的示例
2017/09/15 Python
matplotlib绘图实例演示标记路径
2018/01/23 Python
对Python3使运行暂停的方法详解
2019/02/18 Python
Python中的单下划线和双下划线使用场景详解
2019/09/09 Python
Pycharm 如何一键加引号的方法步骤
2021/02/05 Python
俄罗斯Sportmarket体育在线商店:用于旅游和户外活动
2019/11/12 全球购物
新学期开学演讲稿
2014/05/24 职场文书
党员个人总结自评
2015/02/14 职场文书
优秀大学生申请书
2019/06/24 职场文书
开机音效回归! Windows 11重新引入开机铃声
2021/11/21 数码科技