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 常用字符串函数总结
Mar 15 PHP
php 格式化数字的时候注意数字的范围
Apr 13 PHP
php引用地址改变变量值的问题
Mar 23 PHP
PHP中使用foreach和引用导致程序BUG的问题介绍
Sep 05 PHP
关于PHP堆栈与列队的学习
Jun 21 PHP
浅析THINKPHP的addAll支持的最大数据量
Feb 03 PHP
php获得文件夹下所有文件的递归算法的简单实例
Nov 01 PHP
php输出含有“#”字符串的方法
Jan 18 PHP
自制PHP框架之模型与数据库
May 07 PHP
详解PHP版本兼容之openssl调用参数
Jul 25 PHP
解决Laravel5.x的php artisan migrate数据库迁移创建操作报错SQLSTATE[42000]
Apr 06 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 memcache扩展的三种安装方法
2009/04/26 PHP
hessian 在PHP中的使用介绍
2010/12/13 PHP
Laravel框架Request、Response及Session操作示例
2019/05/06 PHP
PHP实现单文件、多个单文件、多文件上传函数的封装示例
2019/09/02 PHP
Nginx+php配置文件及原理解析
2020/12/09 PHP
JavaScript 笔记二 Array和Date对象方法
2010/05/22 Javascript
js 动态文字滚动的例子
2011/01/17 Javascript
jQuery EasyUI API 中文文档 - Menu菜单
2011/10/03 Javascript
获取select元素被选中的文本内容的js代码
2014/01/29 Javascript
Node.js模拟浏览器文件上传示例
2014/03/26 Javascript
JS实现输入框提示文字点击时消失效果
2016/07/19 Javascript
使用jQuery Ajax 请求webservice来实现更简练的Ajax
2016/08/04 Javascript
浅谈原生JS实现jQuery的animate()动画示例
2017/03/08 Javascript
jsonp跨域请求实现示例
2017/03/13 Javascript
p5.js实现斐波那契螺旋的示例代码
2018/03/22 Javascript
修改npm全局安装模式的路径方法
2018/05/15 Javascript
史上最为详细的javascript继承(推荐)
2019/05/18 Javascript
iview form清除校验状态的实现
2019/09/19 Javascript
[01:10:57]Liquid vs OG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
django admin 后台实现三级联动的示例代码
2018/06/22 Python
Python搭建HTTP服务过程图解
2019/12/14 Python
pytorch中图像的数据格式实例
2020/02/11 Python
python实现AHP算法的方法实例(层次分析法)
2020/09/09 Python
利于python脚本编写可视化nmap和masscan的方法
2020/12/29 Python
matplotlib 使用 plt.savefig() 输出图片去除旁边的空白区域
2021/01/05 Python
Biblibili视频投稿接口分析并以Python实现自动投稿功能
2021/02/05 Python
Anya Hindmarch官网:奢侈设计师手袋及配饰
2018/11/15 全球购物
上级检查欢迎词
2014/01/18 职场文书
实验教师岗位职责
2014/02/13 职场文书
土木工程求职信
2014/05/29 职场文书
2014领导班子四风问题对照检查材料思想汇报
2014/09/21 职场文书
2014年群众路线党员自我评议
2014/09/24 职场文书
先进学校事迹材料
2014/12/30 职场文书
2015年推普周活动总结
2015/03/27 职场文书
中学总务处工作总结
2015/08/12 职场文书
「女孩的钓鱼慢活」全新版权绘公布
2022/03/21 日漫