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程序中防止盗链
Apr 09 PHP
浅析Apache中RewriteCond规则参数的详细介绍
Jun 30 PHP
CodeIgniter基本配置详细介绍
Nov 12 PHP
利用PHP如何实现Socket服务器
Sep 23 PHP
PHP实现搜索地理位置及计算两点地理位置间距离的实例
Jan 08 PHP
ECshop 迁移到 PHP7版本时遇到的兼容性问题
Feb 15 PHP
php格式化json函数示例代码
May 12 PHP
PHP使用自定义方法实现数组合并示例
Jul 07 PHP
php微信公众号开发(4)php实现自定义关键字回复
Dec 15 PHP
PHP chunk_split()函数讲解
Feb 12 PHP
PHP rmdir()函数的用法总结
Jul 02 PHP
laravel 修改.htaccess文件 重定向public的解决方法
Oct 12 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 mvc开发模式的感想
2011/06/28 PHP
关于crontab的使用详解
2013/06/24 PHP
ThinkPHP模板范围判断输出In标签与Range标签用法详解
2014/06/30 PHP
搭建基于Docker的PHP开发环境的详细教程
2015/07/01 PHP
PHP三种方式实现链式操作详解
2017/01/21 PHP
javascript基本语法分析说明
2008/06/15 Javascript
jQuery 学习第六课 实现一个Ajax的TreeView
2010/05/17 Javascript
js实现带搜索功能的下拉框实时搜索实时匹配
2013/11/05 Javascript
Seajs的学习笔记
2014/03/04 Javascript
js中confirm实现执行操作前弹出确认框的方法
2014/11/01 Javascript
javascript实现点击后变换按钮显示文字的方法
2015/05/13 Javascript
JS实现仿QQ面板的手风琴效果折叠菜单代码
2015/09/11 Javascript
jQuery-1.9.1源码分析系列(十一)DOM操作续之克隆节点
2015/12/01 Javascript
JavaScript中循环遍历Array与Map的方法小结
2016/03/12 Javascript
js中最容易被忽视的事件问题大总结
2016/05/15 Javascript
JS识别浏览器类型(电脑浏览器和手机浏览器)
2016/11/18 Javascript
JavaScript奇技淫巧44招【实用】
2016/12/11 Javascript
jQuery回调方法使用示例
2017/06/26 jQuery
js实现网页同时进行多个倒计时功能
2019/02/25 Javascript
浅谈Vue.set实际上是什么
2019/10/17 Javascript
vue子组件改变父组件传递的prop值通过sync实现数据双向绑定(DEMO)
2020/02/01 Javascript
python中reload(module)的用法示例详解
2017/09/15 Python
Python使用Turtle模块绘制五星红旗代码示例
2017/12/11 Python
python脚本监控Tomcat服务器的方法
2018/07/06 Python
python使用suds调用webservice接口的方法
2019/01/03 Python
python实现视频分帧效果
2019/05/31 Python
wxPython之wx.DC绘制形状
2019/11/19 Python
python解释器安装教程的方法步骤
2020/07/02 Python
详解matplotlib中pyplot和面向对象两种绘图模式之间的关系
2021/01/22 Python
Space NK英国站:英国热门美妆网站
2017/12/11 全球购物
微信营销策划方案
2014/02/24 职场文书
外贸员简历中的自我评价
2014/03/04 职场文书
《陈毅探母》教学反思
2014/05/01 职场文书
清洁员岗位职责
2015/02/15 职场文书
遗嘱格式范本
2015/08/07 职场文书
解决vue $http的get和post请求跨域问题
2021/06/07 Vue.js