PHP的PDO连接讲解


Posted in PHP onJanuary 24, 2019

PHP PDO连接

连接是通过创建 PDO 基类的实例而建立的。不管使用哪种驱动程序,都是用 PDO 类名。

连接到 MySQL

<?php
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
?>

注意:如果有任何连接错误,将抛出一个 PDOException 异常对象。

处理连接错误

<?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 相关文章推荐
在Windows中安装Apache2和PHP4的权威指南
Oct 09 PHP
PHP分页显示制作详细讲解
Nov 19 PHP
PHP生成excel时单元格内换行问题的解决方法
Aug 26 PHP
PHP 异步执行方法,模拟多线程的应用分析
Jun 03 PHP
php中调用其他系统http接口的方法说明
Feb 28 PHP
php中cookie实现二级域名可访问操作的方法
Nov 11 PHP
php实现refresh刷新页面批量导入数据的方法
Dec 23 PHP
php绘制一个扇形的方法
Jan 24 PHP
php中array_slice和array_splice函数解析
Oct 18 PHP
php执行多个存储过程的方法【基于thinkPHP】
Nov 08 PHP
yii2项目实战之restful api授权验证详解
May 20 PHP
PHP strripos函数用法总结
Feb 11 PHP
PHP的PDO预定义常量讲解
Jan 24 #PHP
PHP的mysqli_thread_id()函数讲解
Jan 24 #PHP
PHP的mysqli_stmt_init()函数讲解
Jan 24 #PHP
详解php伪造Referer请求反盗链资源
Jan 24 #PHP
PHP的mysqli_stat()函数讲解
Jan 23 #PHP
PHP的mysqli_ssl_set()函数讲解
Jan 23 #PHP
PHP的mysqli_sqlstate()函数讲解
Jan 23 #PHP
You might like
COM in PHP (winows only)
2006/10/09 PHP
php 网页游戏开发入门教程一(webgame+design)
2009/10/26 PHP
windows服务器中检测PHP SSL是否开启以及开启SSL的方法
2014/04/25 PHP
PHP程序员的技术成长规划
2016/03/25 PHP
YII框架关联查询操作示例
2019/04/29 PHP
php使用redis的有序集合zset实现延迟队列应用示例
2020/02/20 PHP
Ajax搜索结果页面下方的分页按钮的生成
2012/04/05 Javascript
当前页禁止复制粘贴截屏代码小集
2013/07/24 Javascript
js中function()使用方法
2013/12/24 Javascript
JS JQUERY实现滚动条自动滚到底的方法
2015/01/09 Javascript
Jquery+ajax+JAVA(servlet)实现下拉菜单异步取值
2016/03/23 Javascript
JavaScipt选取文档元素的方法(推荐)
2016/08/05 Javascript
关于javascript事件响应的基础语法总结(必看篇)
2016/12/26 Javascript
Bootstrap媒体对象学习使用
2017/03/07 Javascript
原生js实现淘宝放大镜效果
2020/10/28 Javascript
详解基于 Node.js 的轻量级云函数功能实现
2019/07/08 Javascript
JsonProperty 的使用方法详解
2019/10/11 Javascript
js+canvas实现两张图片合并成一张图片的方法
2019/11/01 Javascript
javascript自定义右键菜单插件
2019/12/16 Javascript
JS JQuery获取data-*属性值方法解析
2020/09/01 jQuery
用pywin32实现windows模拟鼠标及键盘动作
2014/04/22 Python
Python中获取对象信息的方法
2015/04/27 Python
python3中dict(字典)的使用方法示例
2017/03/22 Python
对pandas读取中文unicode的csv和添加行标题的方法详解
2018/12/12 Python
PyCharm取消波浪线、下划线和中划线的实现
2020/03/03 Python
Pytorch 使用CNN图像分类的实现
2020/06/16 Python
快速解决pymongo操作mongodb的时区问题
2020/12/05 Python
html5组织文档结构_动力节点Java学院整理
2017/07/11 HTML / CSS
欧洲最大的化妆品连锁公司:Douglas道格拉斯
2017/05/06 全球购物
Conforama西班牙:您的家具、装饰和电器商店
2020/02/21 全球购物
3个CCIE对一个工程师的面试题
2012/05/06 面试题
公司市场部岗位职责
2013/12/02 职场文书
聘任书模板
2014/03/29 职场文书
诚信考试标语
2014/06/24 职场文书
浏览器常用基本操作之python3+selenium4自动化测试(基础篇3)
2021/05/21 Python
JS实现简单的九宫格抽奖
2022/06/28 Javascript