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 相关文章推荐
新浪新闻小偷
Oct 09 PHP
PHP 页面跳转到另一个页面的多种方法方法总结
Jul 07 PHP
php smarty模版引擎中的缓存应用
Dec 02 PHP
PHP setcookie设置Cookie用法(及设置无效的问题)
Jul 13 PHP
php检测数组长度函数sizeof与count用法
Nov 17 PHP
PHP中实现接收多个name相同但Value不相同表单数据实例
Feb 03 PHP
Laravel中使用阿里云OSS Composer包分享
Feb 10 PHP
基础的WordPress插件制作教程
Nov 24 PHP
使用WordPress发送电子邮件的相关PHP函数用法解析
Dec 15 PHP
Thinkphp和Bootstrap结合打造个性的分页样式(推荐)
Aug 01 PHP
阿里云的WindowsServer2016上部署php+apache
Jul 17 PHP
php中文语义分析实现方法示例
Sep 28 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
ThinkPHP2.0读取MSSQL提示Incorrect syntax near the keyword 'AS'的解决方法
2014/06/25 PHP
getJSON跨域SyntaxError问题分析
2014/08/07 PHP
php用户登录之cookie信息安全分析
2016/05/13 PHP
总结对比php中的多种序列化
2016/08/28 PHP
PHP基于新浪IP库获取IP详细地址的方法
2017/05/04 PHP
PHP超低内存遍历目录文件和读取超大文件的方法
2019/05/01 PHP
在JavaScript中实现命名空间
2006/11/23 Javascript
一个JS翻页效果
2007/07/23 Javascript
js 浮动层菜单收藏
2009/01/16 Javascript
Ext.MessageBox工具类简介
2009/12/10 Javascript
让IE6支持min-width和max-width的方法
2010/06/25 Javascript
Dom在ajax技术中的作用说明
2010/10/25 Javascript
jQuery 遍历-nextUntil()方法以及prevUntil()方法的使用介绍
2013/04/26 Javascript
超炫的jquery仿flash导航栏特效
2014/11/11 Javascript
jquery结合CSS使用validate实现漂亮的验证
2015/01/29 Javascript
JavaScript 事件对象介绍
2015/04/13 Javascript
JavaScript中关于for循环删除数组元素内容时出现的问题
2016/11/21 Javascript
微信小程序手势操作之单触摸点与多触摸点
2017/03/10 Javascript
js下载文件并修改文件名
2017/05/08 Javascript
利用canvas中toDataURL()将图片转为dataURL(base64)的方法详解
2017/11/20 Javascript
vue中引用阿里字体图标的方法
2018/02/10 Javascript
Node.js利用console输出日志文件的方法示例
2018/04/27 Javascript
layui结合form,table的全选、反选v1.0示例讲解
2018/08/15 Javascript
[04:09]显微镜下的DOTA2第十二期—NaVi美如画的团战
2014/06/23 DOTA
使用rpclib进行Python网络编程时的注释问题
2015/05/06 Python
简单介绍Python中的round()方法
2015/05/15 Python
python基于multiprocessing的多进程创建方法
2015/06/04 Python
Python绘制七段数码管实例代码
2017/12/20 Python
关于pymysql模块的使用以及代码详解
2019/09/01 Python
Python Django框架模板渲染功能示例
2019/11/08 Python
html5新增的属性和废除的属性简要概述
2013/02/20 HTML / CSS
JAVA程序员自荐书
2014/01/30 职场文书
工作失职检讨书
2015/01/26 职场文书
2016自主招生教师推荐信范文
2015/03/23 职场文书
股东合作协议书模板2篇
2019/11/05 职场文书
MySQL导致索引失效的几种情况
2022/06/25 MySQL