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 相关文章推荐
利用php实现禁用IE和火狐的缓存问题
Dec 03 PHP
ThinkPHP实现一键清除缓存方法
Jun 26 PHP
PHP创建PowerPoint2007文档的方法
Dec 10 PHP
thinkphp,onethink和thinkox中验证码不显示的解决方法分析
Jun 06 PHP
PHP读书笔记_运算符详解
Jul 01 PHP
浅析php如何实现App常用的秒发功能
Aug 03 PHP
CakePHP框架Session设置方法分析
Feb 23 PHP
PHP文件系统管理(实例讲解)
Sep 19 PHP
详谈symfony window下的安装 安装时候出现的问题以及解决方法
Sep 28 PHP
PHP自定义函数实现assign()数组分配到模板及extract()变量分配到模板功能示例
May 23 PHP
php面向对象重点知识分享
Sep 27 PHP
如何在Laravel5.8中正确地应用Repository设计模式
Nov 26 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
php自定义加密与解密程序实例
2014/12/31 PHP
php发送邮件的问题详解
2015/06/22 PHP
PHP实现chrome表单请求数据转换为接口使用的json数据
2021/03/04 PHP
Nigma vs Alliance BO5 第五场2.14
2021/03/10 DOTA
写了一个layout,拖动条连贯,内容区可为iframe
2007/08/19 Javascript
Javascript 实现的数独解题算法网页实例
2013/10/15 Javascript
JavaScript中instanceof运算符的用法总结
2013/11/19 Javascript
jquery控制页面部分刷新的方法
2015/06/24 Javascript
jQuery头像裁剪工具jcrop用法实例(附演示与demo源码下载)
2016/01/22 Javascript
基于Vuejs框架实现翻页组件
2020/06/29 Javascript
jquery设置css样式的多种方法(总结)
2017/02/21 Javascript
Angular2开发——组件规划篇
2017/03/28 Javascript
Node.js连接mongodb实例代码
2017/06/06 Javascript
彻底解决 webpack 打包文件体积过大问题
2017/07/07 Javascript
js canvas实现简单的图像扩散效果
2020/06/28 Javascript
vue-router+vuex addRoutes实现路由动态加载及菜单动态加载
2017/09/28 Javascript
layui实现点击按钮给table添加一行
2018/08/10 Javascript
vue服务端渲染添加缓存的方法
2018/09/18 Javascript
微信小程序弹窗禁止页面滚动的实现代码
2020/12/30 Javascript
[35:55]完美世界DOTA2联赛PWL S3 Rebirth vs CPG 第一场 12.11
2020/12/13 DOTA
Python 返回汉字的汉语拼音
2009/02/27 Python
python中将阿拉伯数字转换成中文的实现代码
2011/05/19 Python
python实现监控linux性能及进程消耗性能的方法
2014/07/25 Python
Python实现基于TCP UDP协议的IPv4 IPv6模式客户端和服务端功能示例
2018/03/22 Python
python实现浪漫的烟花秀
2019/01/30 Python
Numpy 理解ndarray对象的示例代码
2020/04/03 Python
Python3.9 beta2版本发布了,看看这7个新的PEP都是什么
2020/06/10 Python
UI自动化定位常用实现方法代码示例
2020/10/27 Python
python 实现IP子网计算
2021/02/18 Python
优衣库美国官网:UNIQLO美国
2018/04/14 全球购物
英国邮购活的植物主要供应商:Gardening Direct
2019/01/28 全球购物
俄罗斯披萨、寿司和面食送货到家服务:2 Берега
2019/12/15 全球购物
平面设计岗位职责
2013/12/14 职场文书
工资证明格式模板
2015/06/12 职场文书
一个家长教育孩子的心得体会
2016/01/15 职场文书
python脚本框架webpy的url映射详解
2021/11/20 Python