首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DBAL立即连接

DBAL立即连接
EN

Stack Overflow用户
提问于 2015-11-20 18:43:16
回答 2查看 164关注 0票数 0

在PDO (同样地,DBAL)中,如果与服务器进行身份验证有问题,它将抛出一个异常,其中包含一个跟踪,包括数据库用户名和密码。

不用说,这是一个问题,在PDO中,我会将它封装在一个try块中,然后在没有堆栈跟踪的情况下重新抛出错误。问题解决了。

但是,在调用第一个查询之前,DBAL实际上不会启动连接,因此它完全错过了try块,并在第一次获得的机会中输出了我的数据库凭据!

如何强制DBAL立即连接,以便捕获任何身份验证错误?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-11-20 19:10:58

\Doctrine\DBAL\Connection::connect()

回想起来很明显。

票数 0
EN

Stack Overflow用户

发布于 2016-08-02 16:47:04

我的数据库是ibm db2,所以我在dbal中使用odbc连接。这就是我如何设置连接的方式,请注意PDO位于try catch块中。

代码语言:javascript
复制
use Doctrine\DBAL\Configuration;
use Doctrine\DBAL\DriverManager;

use Doctrine\DBAL\Connection;
use Doctrine\DBAL\Query\QueryBuilder;


$connPdo = null;
try {

    $connPdo = new PDO('odbc:'.SYSTEM_DSN_NAME, DB_USERNAME, DB_PASSWORD, array(
      PDO::ATTR_PERSISTENT => TRUE, 
      PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)
    ); 

} catch (PDOException $e) {
    echo $e->getMessage() . '</br>';
}

$config = new Configuration();
$connectionParams = array(
    'user'     => DB_USERNAME,
    'password' => DB_PASSWORD,
    'pdo'      => $connPdo,
    'driverClass' =>'Doctrine\DBAL\Driver\PDOIbm\Driver',
);

$connection = DriverManager::getConnection($connectionParams, $config);


$queryBuilder = $connection->createQueryBuilder();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33833850

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档