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将数据导入到Foxmail
Oct 09 PHP
PHP 数组基础知识小结
Aug 20 PHP
PHP flush()与ob_flush()的区别详解
Jun 03 PHP
深入PHP数据加密详解
Jun 18 PHP
解决FastCGI 进程超过了配置的活动超时时限的问题
Jul 03 PHP
php文件夹的创建与删除方法
Jan 24 PHP
codeigniter中实现一次性加载多个view的方法
Mar 20 PHP
PHP面相对象中的重载与重写
Feb 13 PHP
PHP针对中英文混合字符串长度判断及截取方法示例
Mar 31 PHP
thinkPHP5.0框架验证码调用及点击图片刷新简单实现方法
Sep 07 PHP
TP5(thinkPHP框架)实现后台清除缓存功能示例
May 29 PHP
Yii 框架使用Forms操作详解
May 18 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
通过JavaScript或PHP检测Android设备的代码
2011/03/09 PHP
适用于php-5.2 的 php.ini 中文版[金步国翻译]
2011/04/17 PHP
php学习笔记(三)操作符与控制结构
2011/08/06 PHP
JavaScript入门教程(5) js Screen屏幕对象
2009/01/31 Javascript
基于Jquery插件开发之图片放大镜效果(仿淘宝)
2011/11/19 Javascript
flash遮住div问题的正确解决方法
2014/02/27 Javascript
javascript实现五星评价代码(源码下载)
2015/08/11 Javascript
JavaScript性能优化之函数节流(throttle)与函数去抖(debounce)
2016/08/11 Javascript
关于List.ToArray()方法的效率测试
2016/09/30 Javascript
微信小程序 登录实例详解
2017/01/16 Javascript
Angular 输入框实现自定义验证功能
2017/02/19 Javascript
Vue动态实现评分效果
2017/05/24 Javascript
vue实现导航栏效果(选中状态刷新不消失)
2017/12/13 Javascript
深入解析koa之异步回调处理
2019/06/17 Javascript
JavaScript Date对象功能与用法学习记录
2020/04/28 Javascript
如何基于jQuery实现五角星评分
2020/09/02 jQuery
[00:30]明星选手化身超级英雄!2018DOTA2亚洲邀请赛全明星赛来临!
2018/04/06 DOTA
[01:30]我们共输赢 完美世界城市挑战赛开启全新赛季
2019/04/19 DOTA
Python正则表达式的使用范例详解
2014/08/08 Python
详解python 中in 的 用法
2019/12/12 Python
基于python实现把json数据转换成Excel表格
2020/05/07 Python
10个python爬虫入门实例(小结)
2020/11/01 Python
如何通过python实现IOU计算代码实例
2020/11/02 Python
python装饰器代码深入讲解
2021/03/01 Python
CSS3 按钮边框动画的实现
2020/11/12 HTML / CSS
Html5原创俄罗斯方块(基于canvas)
2019/01/07 HTML / CSS
麦当劳印度网上订餐:McDelivery
2020/03/16 全球购物
速卖通欧盟:Aliexpress EU
2020/08/19 全球购物
2015年办公室人员工作总结
2015/05/15 职场文书
为自己工作观后感
2015/06/11 职场文书
2015暑假假期总结
2015/07/13 职场文书
餐厅营销的秘密:为什么老顾客会流水?
2019/08/08 职场文书
MySQL Router的安装部署
2021/04/24 MySQL
pandas DataFrame.shift()函数的具体使用
2021/05/24 Python
mysql主从复制的实现步骤
2021/10/24 MySQL
利用Sharding-Jdbc进行分库分表的操作代码
2022/01/22 Java/Android