博主信息
博文 100
粉丝 8
评论 2
访问量 174853
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
PDO连接mysql数据库参数
lilove的博客
原创
1476人浏览过

连接与连接管理


连接是通过创建 PDO 基类的实例而建立的。不管使用哪种驱动程序,都是用 PDO 类名。构造函数接收用于指定数据库源(所谓的 DSN)以及可能还包括用户名和密码(如果有的话)的参数。


Example #1 连接到 MySQL

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


如果有任何连接错误,将抛出一个 PDOException 异常对象。如果想处理错误状态,可以捕获异常,或者选择留给通过 set_exception_handler()  设置的应用程序全局异常处理程序。


Example #2 处理连接错误

<?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();
}
?>


Warning

如果应用程序不在 PDO 构造函数中捕获异常,zend 引擎采取的默认动作是结束脚本并显示一个回溯跟踪,此回溯跟踪可能泄漏完整的数据库连接细节,包括用户名和密码。因此有责任去显式(通过 catch 语句)或隐式(通过 set_exception_handler()  )地捕获异常。

连接数据成功后,返回一个 PDO 类的实例给脚本,此连接在 PDO 对象的生存周期中保持活动。要想关闭连接,需要销毁对象以确保所有剩余到它的引用都被删除,可以赋一个 NULL   值给对象变量。如果不明确地这么做,PHP 在脚本结束时会自动关闭连接。


Example #3 关闭一个连接

<?php
$dbh  = new  PDO ( 'mysql:host=localhost;dbname=test' ,  $user ,  $pass );
// 在此使用连接


// 现在运行完成,在此关闭连接
$dbh  =  null ;
?>


很多 web 应用程序通过使用到数据库服务的持久连接获得好处。持久连接在脚本结束后不会被关闭,且被缓存,当另一个使用相同凭证的脚本连接请求时被重用。持久连接缓存可以避免每次脚本需要与数据库回话时建立一个新连接的开销,从而让 web 应用程序更快。


Example #4 持久化连接

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


Note:

如果想使用持久连接,必须在传递给 PDO 构造函数的驱动选项数组中设置 PDO::ATTR_PERSISTENT  。如果是在对象初始化之后用 PDO::setAttribute()  设置此属性,则驱动程序将不会使用持久连接。


Note:

如果使用 PDO ODBC 驱动且 ODBC 库支持 ODBC 连接池(有unixODBC 和 Windows 两种做法;可能会有更多),建议不要使用持久的 PDO 连接,而是把连接缓存留给 ODBC 连接池层处理。 ODBC 连接池在进程中与其他模块共享;如果要求 PDO 缓存连接,则此连接绝不会被返回到 ODBC 连接池,导致创建额外的连接来服务其他模块。 


本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学