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 相关文章推荐
在PWS上安装PHP4.0正式版
Oct 09 PHP
php 购物车的例子
May 04 PHP
php入门教程 精简版
Dec 13 PHP
zf框架的session会话周期及次数限制使用示例
Mar 13 PHP
PHP类中的魔术方法(Magic Method)简明总结
Jul 08 PHP
composer.lock文件的作用
Feb 03 PHP
orm获取关联表里的属性值
Apr 17 PHP
php有效防止图片盗用、盗链的两种方法
Nov 01 PHP
php对象工厂类完整示例
Aug 09 PHP
PDO::query讲解
Jan 29 PHP
PHP PDOStatement::fetchObject讲解
Feb 01 PHP
PHP结合Redis+MySQL实现冷热数据交换应用案例详解
Jul 09 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数据结构与算法(PHP描述) 快速排序 quick sort
2012/06/21 PHP
PHP图片等比缩放类SimpleImage使用方法和使用实例分享
2014/04/10 PHP
php使用array_rand()函数从数组中随机选择一个或多个元素
2014/04/28 PHP
php车辆违章查询数据示例
2016/10/14 PHP
php array_key_exists() 与 isset() 的区别
2016/10/24 PHP
PHP排序算法之基数排序(Radix Sort)实例详解
2018/04/21 PHP
PHP使用curl_multi实现并发请求的方法示例
2018/04/29 PHP
php文件后缀不强制为.php的实操方法
2019/09/18 PHP
使用jQuery fancybox插件打造一个实用的数据传输模态弹出窗体
2013/01/15 Javascript
node.js实现BigPipe详解
2014/12/05 Javascript
jQuery+easyui中的combobox实现下拉框特效
2015/02/27 Javascript
Vue.js实现一个SPA登录页面的过程【推荐】
2017/04/29 Javascript
详解基于Bootstrap+angular的一个豆瓣电影app
2017/06/26 Javascript
详解微信小程序框架wepy踩坑记录(与vue对比)
2019/03/12 Javascript
使用JavaScript计算前一天和后一天的思路详解
2019/12/20 Javascript
[02:33]2018DOTA2亚洲邀请赛赛前采访——LGD
2018/04/04 DOTA
python用来获得图片exif信息的库实例分析
2015/03/16 Python
Python中的rfind()方法使用详解
2015/05/19 Python
Python多进程机制实例详解
2015/07/02 Python
Django中对通过测试的用户进行限制访问的方法
2015/07/23 Python
用Python实现斐波那契(Fibonacci)函数
2016/03/25 Python
python 划分数据集为训练集和测试集的方法
2018/12/11 Python
对PyQt5中树结构的实现方法详解
2019/06/17 Python
Python学习笔记之列表推导式实例分析
2019/08/13 Python
Python TCPServer 多线程多客户端通信的实现
2019/12/31 Python
150行Python代码实现带界面的数独游戏
2020/04/04 Python
利用Python实现斐波那契数列的方法实例
2020/07/26 Python
浅谈如何使用python抓取网页中的动态数据实现
2020/08/17 Python
泰国综合购物网站:Lazada泰国
2018/04/09 全球购物
开普敦通行证:Cape Town Pass
2019/07/18 全球购物
报关简历自我评价怎么写
2013/09/19 职场文书
中学生学习生活的自我评价
2013/10/26 职场文书
小学校园活动策划
2014/01/30 职场文书
运动会主持人开幕词
2016/03/04 职场文书
少年的你:世界上没有如果,要在第一次就勇敢的反抗
2019/11/20 职场文书
redis调用二维码时的不断刷新排查分析
2022/04/01 Redis