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采集相关教程之一 CURL函数库
Feb 15 PHP
解析csv数据导入mysql的方法
Jul 01 PHP
PHP字符串长度计算 - strlen()函数使用介绍
Oct 15 PHP
PHP数字字符串左侧补0、字符串填充和自动补齐的几种方法
May 10 PHP
php学习笔记之基础知识
Nov 08 PHP
简单了解将WordPress中的工具栏移到底部的小技巧
Dec 31 PHP
PHP 无限级分类
May 04 PHP
PHP简单实现循环链表功能示例
Nov 10 PHP
PHP实现微信商户支付企业付款到零钱功能
Sep 30 PHP
Linux下安装Memcached服务器和客户端与PHP使用示例
Apr 15 PHP
php 输出缓冲 Output Control用法实例详解
Mar 03 PHP
Laravel登录失败次数限制的实现方法
Aug 26 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 addslashes 函数详细分析说明
2009/06/23 PHP
Zend Framework数据库操作方法实例总结
2016/12/11 PHP
php生成毫秒时间戳的实例讲解
2017/09/22 PHP
JavaScript 数组运用实现代码
2010/04/13 Javascript
javascript通过class来获取元素实现代码
2013/02/20 Javascript
通过js来制作复选框的全选和不选效果
2014/05/22 Javascript
jQuery实现的原图对比窗帘效果
2014/06/15 Javascript
jQuery中的siblings用法实例分析
2015/12/24 Javascript
jQuery ajax时间差导致的变量赋值问题分析
2016/01/22 Javascript
webpack+vue.js实现组件化详解
2016/10/12 Javascript
Javascript 普通函数和构造函数的区别
2016/11/05 Javascript
Vue.js实现图片的随意拖动方法
2018/03/08 Javascript
引入外部js脚本加载慢与页面白屏问题的解决
2018/12/10 Javascript
一文读懂ES7中的javascript修饰器
2019/05/06 Javascript
vue+layui实现select动态加载后台数据的例子
2019/09/20 Javascript
Vue中computed及watch区别实例解析
2020/08/01 Javascript
[01:00:12]2018DOTA2亚洲邀请赛 4.7 淘汰赛 VP vs LGD 第一场
2018/04/09 DOTA
[01:15:15]VG VS EG Supermajor小组赛B组胜者组第一轮 BO3第二场 6.2
2018/06/03 DOTA
python中查看变量内存地址的方法
2015/05/05 Python
Python基于tkinter模块实现的改名小工具示例
2017/07/27 Python
python内置函数:lambda、map、filter简单介绍
2017/11/16 Python
用Python下载一个网页保存为本地的HTML文件实例
2018/05/21 Python
如何用Python制作微信好友个性签名词云图
2019/06/28 Python
python 执行终端/控制台命令的例子
2019/07/12 Python
python+selenium select下拉选择框定位处理方法
2019/08/24 Python
Iconfont(矢量图标)+iconmoon(图标svg互转)配合javascript实现社交分享系统
2020/04/21 Python
给keras层命名,并提取中间层输出值,保存到文档的实例
2020/05/23 Python
Python如何解除一个装饰器
2020/08/07 Python
基于IE10/HTML5 开发
2013/04/22 HTML / CSS
运动会领导邀请函
2014/01/10 职场文书
自我介绍演讲稿
2014/01/15 职场文书
酒店餐厅2014重阳节活动策划方案
2014/09/16 职场文书
先进教育工作者事迹材料
2014/12/23 职场文书
导游词之麻姑仙境
2019/11/18 职场文书
Java基础之详解HashSet的使用方法
2021/06/30 Java/Android
CSS实现五种常用的2D转换
2021/12/06 HTML / CSS