php - 使用Doctrine中的DriverManager和QueryBuilder正确测试连接

标签 php error-handling doctrine query-builder

我们在Silex应用程序中使用DriverManager::getConnection来检索与数据库服务器的连接,以及正确实例化的Configuration类。

例如,我负责返回代码并正确处理连接错误,以在连接当前断开时显示用户友好的错误消息。

在我看来,这似乎很简单。但是,在实际发送查询之前,我找不到断言连接有效的任何可用方法。

这是建立连接的示例:

use Doctrine\DBAL\Configuration;
use Doctrine\DBAL\DriverManager;
use Doctrine\DBAL\Query\QueryBuilder;

// ... //

public function __construct( $host, $username, $password, $db, $port )
{
    $this->configuration = new Configuration();
        $connectionParams = array(
        'dbname' => $db,
        'user' => $username,
        'password' => $password,
        'host' => $host,
        'port' => $port,
        'driver' => 'pdo_mysql'
    );
        $this->connection = DriverManager::getConnection( $connectionParams, $this->configuration );
}

如果没有有效的连接可用,该方法将失败
public function executeQuery( QueryBuilder $queryBuilder )
{
    $query = $queryBuilder->getSql();

    $statement = $queryBuilder->execute( $query );

    return $statement;
}

我主要使用mysqli,您可以为它简单地执行from the mysqli doc这样的事情。

我正在寻找与当前工作流程等效的方法,但感到惊讶的是,我在任何地方都无法获得有关使用DBAL处理数据库连接错误的任何相关信息...

我相信这意味着我正在寻找错误的事情,希望我能为正确的方向提供指导,因为我必须为明天实现这一目标!如果发现任何相关问题,我将继续我的研究并发布后续信息!

谢谢。

最佳答案

如果数据库连接不好或断开连接,Doctrine将抛出某种异常(我不记得发生了什么,并且驱动程序之间可能会有所不同)。

因此,您可能想要找到合适的位置来捕获这些异常并很好地处理它们。

关于php - 使用Doctrine中的DriverManager和QueryBuilder正确测试连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23418513/

相关文章:

php - 是否可以在 UML 中可视化一堆函数

error-handling - MS Access回滚错误处理回滚

php - PHP : Log into an “global array”

meteor - meteor Accounts.changePassword的错误格式不一致

php - 排序规则 "latin1_swedish_ci"中数据库的回显导致网页上出现问号符号

php - 使用 smarty 从字符串中去除空格

mysql - 在 DQL 中加入并计数

php - Zend Framework 2 表单注释在没有额外空间的情况下被忽略

php - 审核大型 PHP 脚本?

doctrine - Doctrine_Expression 问题(Doctrine 2) 'There is no open connection'