Php 使用原则中的DriverManager和QueryBuilder正确测试连接

Php 使用原则中的DriverManager和QueryBuilder正确测试连接,php,error-handling,doctrine,query-builder,Php,Error Handling,Doctrine,Query Builder,我们在Silex应用程序中使用DriverManager::getConnection检索到数据库服务器的连接,以及正确实例化的配置类 例如,我负责返回代码并正确处理连接错误,以便在连接当前关闭时显示用户友好的错误消息 在我看来,这似乎很简单。但在实际发送查询之前,我找不到任何方法来断言连接是否有效 以下是构建连接的示例: use Doctrine\DBAL\Configuration; use Doctrine\DBAL\DriverManager; use Doctrine\DBAL\Que

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

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

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

以下是构建连接的示例:

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,您可以简单地执行以下操作

我正在寻找一个与我们当前的工作流程相当的工作流程,并且很惊讶我在任何地方都无法获得有关使用DBAL处理DB连接错误的任何相关信息

我相信这意味着我在寻找错误的东西,希望我能被引导到正确的方向,因为我必须在明天实现这一点!如果我发现任何相关信息,我将继续我的研究和后续跟进


谢谢。

如果数据库连接不好或消失,Doctrine将抛出某种异常(我不记得是什么,而且可能因驱动程序而异)


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

是的,它抛出了一个DBALException。我更像是一个javascript程序员,实际上我忘记了反斜杠类名(\DBALException),以便使用基本名称空间而不是当前名称空间。。。那真是愚蠢啊哈。谢谢