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 相关文章推荐
一个更简单的无限级分类菜单代码
Jan 16 PHP
ajax+php打造进度条代码[readyState各状态说明]
Apr 12 PHP
PHP 强制性文件下载功能的函数代码(任意文件格式)
May 26 PHP
php获取文件内容最后一行示例
Jan 09 PHP
PHP封装的一个支持HTML、JS、PHP重定向的多功能跳转函数
Jun 19 PHP
经典PHP加密解密函数Authcode()修复版代码
Apr 05 PHP
php将一维数组转换为每3个连续值组成的二维数组
May 06 PHP
PHP 信号管理知识整理汇总
Feb 19 PHP
Yii框架使用魔术方法实现跨文件调用功能示例
May 20 PHP
PHP环形链表实现方法示例
Sep 15 PHP
php 算法之实现相对路径的实例
Oct 17 PHP
laravel异步监控定时调度器实例详解
Jun 21 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递归实现无限分类 格式化数组的详解
2013/06/08 PHP
PHP创建word文档的方法(平台无关)
2016/03/29 PHP
PHP中文字符串截断无乱码解决方法
2016/10/10 PHP
PHP中检查isset()和!empty()函数的必要性
2019/02/13 PHP
php中字符串和整数比较的操作方法
2019/06/06 PHP
JavaScript setTimeout和setInterval的使用方法 说明
2010/03/25 Javascript
jquery实现显示已选用户
2014/07/21 Javascript
jquery实现导航固定顶部的效果仿蘑菇街
2014/10/22 Javascript
JS跨域问题详解
2014/11/25 Javascript
jQuery动态效果显示人物结构关系图的方法
2015/05/07 Javascript
轻松学习jQuery插件EasyUI EasyUI实现树形网络基本操作(2)
2015/11/30 Javascript
Mongoose学习全面理解(推荐)
2017/01/21 Javascript
利用vueJs实现图片轮播实例代码
2017/06/03 Javascript
jQuery 添加样式属性的优先级别方法(推荐)
2017/06/08 jQuery
VUE axios上传图片到七牛的实例代码
2017/07/28 Javascript
vue 全选与反选的实现方法(无Bug 新手看过来)
2018/02/09 Javascript
原生JavaScript实现todolist功能
2018/03/02 Javascript
Vue中父子组件通讯之todolist组件功能开发
2018/05/21 Javascript
解决vue-cli3 使用子目录部署问题
2018/07/19 Javascript
微信小程序非跳转式组件授权登录的方法示例
2019/05/22 Javascript
通过实例讲解JS如何防抖动
2019/06/15 Javascript
微信小程序实现签到弹窗动画
2020/09/21 Javascript
Python 3.x 新特性及10大变化
2015/06/12 Python
Python实现二维有序数组查找的方法
2016/04/27 Python
Python数据结构之图的应用示例
2018/05/11 Python
基于django micro搭建网站实现加水印功能
2020/05/22 Python
芭比波朗加拿大官方网站:Bobbi Brown Cosmetics CA
2020/11/05 全球购物
八年级历史教学反思
2014/01/10 职场文书
2014年十一国庆向国旗敬礼寄语
2014/04/11 职场文书
2015年保送生自荐信
2015/03/24 职场文书
2015年档案管理工作总结
2015/04/08 职场文书
公司行政助理岗位职责
2015/04/11 职场文书
车辆安全隐患排查制度
2015/08/05 职场文书
三严三实·严以律己心得体会
2016/01/13 职场文书
来探秘“德国中小企业”的成功之道
2019/07/26 职场文书
apache基于端口创建虚拟主机的示例
2021/04/22 Servers