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 相关文章推荐
NT IIS下用ODBC连接数据库
Oct 09 PHP
PHP如何解决网站大流量与高并发的问题
Jun 25 PHP
php 记录进行累加并显示总时长为秒的结果
Nov 04 PHP
深入PHP运行环境配置的详解
Jun 04 PHP
Youku 视频绝对地址获取的方法详解
Jun 26 PHP
php利用单例模式实现日志处理类库
Feb 10 PHP
php实现的zip文件内容比较类
Sep 24 PHP
如何利用http协议发布博客园博文评论
Aug 03 PHP
php插件Xajax使用方法详解
Aug 31 PHP
LNMP部署laravel以及xhprof安装使用教程
Sep 14 PHP
thinkPHP3.2.2框架行为扩展及demo示例
Jun 19 PHP
PHP使用XMLWriter读写xml文件操作详解
Jul 31 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发送邮件类代码附详细说明
2008/07/10 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(三)
2014/06/23 PHP
php批量添加数据与批量更新数据的实现方法
2014/12/16 PHP
ThinkPHP中create()方法自动验证表单信息
2017/04/28 PHP
PHP结合Ffmpeg快速搭建流媒体服务的实践记录
2018/10/31 PHP
PHP压缩图片功能的介绍
2019/03/21 PHP
Raphael一个用于在网页中绘制矢量图形的Javascript库
2013/01/08 Javascript
JS 对象属性相关(检查属性、枚举属性等)
2015/04/05 Javascript
javascript基本算法汇总
2016/03/09 Javascript
基于Bootstrap的UI扩展 StyleBootstrap
2016/06/17 Javascript
深入浅出ES6新特性之函数默认参数和箭头函数
2016/08/01 Javascript
Vue Promise的axios请求封装详解
2018/08/13 Javascript
Vue框架里使用Swiper的方法示例
2018/09/20 Javascript
Vue+Element实现动态生成新表单并添加验证功能
2019/05/23 Javascript
vue中对象数组去重的实现
2020/02/06 Javascript
python模块简介之有序字典(OrderedDict)
2016/12/01 Python
python实现TF-IDF算法解析
2018/01/02 Python
对Python通过pypyodbc访问Access数据库的方法详解
2018/10/27 Python
python实现文本进度条 程序进度条 加载进度条 单行刷新功能
2019/07/03 Python
Python函数的定义方式与函数参数问题实例分析
2019/12/26 Python
Macbook安装Python最新版本、GUI开发环境、图像处理、视频处理环境详解
2020/02/17 Python
python pip如何手动安装二进制包
2020/09/30 Python
一款纯css3实现的动画加载导航
2014/10/08 HTML / CSS
HTML5 input元素类型:email及url介绍
2013/08/13 HTML / CSS
美国网上鞋城:Shoeline.com
2016/11/17 全球购物
英国森林假期:Forest Holidays
2021/01/01 全球购物
校园网站的创业计划书范文
2013/12/30 职场文书
品牌宣传方案
2014/03/21 职场文书
机关作风建设自查报告及整改措施
2014/10/21 职场文书
外贸业务员岗位职责
2015/02/13 职场文书
2015年教师党员承诺书
2015/04/27 职场文书
毕业论文致谢词
2015/05/14 职场文书
医学生自荐信范文(2016精选篇)
2016/01/28 职场文书
《从现在开始》教学反思
2016/02/16 职场文书
2016年社区植树节活动总结
2016/03/16 职场文书
python调试工具Birdseye的使用教程
2021/05/25 Python