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常用函数小技巧
Sep 11 PHP
Ajax实时验证用户名/邮箱等是否已经存在的代码打包
Dec 01 PHP
PHP 验证登陆类分享
Mar 13 PHP
PHP获取音频文件的相关信息
Jun 22 PHP
php调用淘宝开放API实现根据卖家昵称获取卖家店铺ID的方法
Jul 29 PHP
php实现CSV文件导入和导出
Oct 24 PHP
php版微信公众平台接口参数调试实现判断用户行为的方法
Sep 23 PHP
Android AsyncTack 异步任务实例详解
Nov 02 PHP
Symfony查询方法实例小结
Jun 28 PHP
php实现基于pdo的事务处理方法示例
Jul 21 PHP
PHP基于自定义函数实现的汉字转拼音功能实例
Sep 30 PHP
phpinfo的知识点总结
Oct 10 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
真正面向对象编程:PHP5.01发布
2006/10/09 PHP
php生成gif动画的方法
2015/11/05 PHP
Yii CDBCriteria常用方法实例小结
2017/01/19 PHP
PHP实现删除多重数组对象属性并重新赋值的方法
2017/06/07 PHP
ThinkPHP框架实现定时执行任务的两种方法分析
2018/09/04 PHP
PHP Swoole异步读取、写入文件操作示例
2019/10/24 PHP
javascript模版引擎-tmpl的bug修复与性能优化分析
2011/10/23 Javascript
JavaScript mapreduce工作原理简析
2012/11/25 Javascript
使用javascript实现页面定时跳转总结篇
2013/09/21 Javascript
self.attachevent is not a function的解决方法
2017/04/04 Javascript
基于js原生和ajax的get和post方法以及jsonp的原生写法实例
2017/10/16 Javascript
解决vue单页面修改样式无法覆盖问题
2019/08/05 Javascript
layui 实现表格某一列显示图标
2019/09/19 Javascript
vue3.0 上手体验
2020/09/21 Javascript
webstorm建立vue-cli脚手架的傻瓜式教程
2020/09/22 Javascript
[43:33]EG vs Spirit Supermajor 败者组 BO3 第一场 6.4
2018/06/05 DOTA
Python中的迭代器漫谈
2015/02/03 Python
Python解析xml中dom元素的方法
2015/03/12 Python
python在windows和linux下获得本机本地ip地址方法小结
2015/03/20 Python
利用Anaconda完美解决Python 2与python 3的共存问题
2017/05/25 Python
Django学习笔记之ORM基础教程
2018/03/27 Python
使用python存储网页上的图片实例
2018/05/22 Python
对pyqt5多线程正确的开启姿势详解
2019/06/14 Python
python通过移动端访问查看电脑界面
2020/01/06 Python
python使用docx模块读写docx文件的方法与docx模块常用方法详解
2020/02/17 Python
css 如何让背景图片拉伸填充避免重复显示
2013/07/11 HTML / CSS
高校教师思想汇报
2014/01/11 职场文书
网上书店创业计划书
2014/01/12 职场文书
干部现实表现材料
2014/02/13 职场文书
2014幼儿园教师个人工作总结
2014/11/08 职场文书
五星级酒店前台接待岗位职责
2015/04/02 职场文书
2015年英语教研组工作总结
2015/05/23 职场文书
2015暑期社会实践通讯稿
2015/07/18 职场文书
周一给客户的问候语
2015/11/10 职场文书
求职信:求职应该注意的问题
2019/04/24 职场文书
win10下go mod配置方式
2021/04/25 Golang