Php 使用原则中的DriverManager和QueryBuilder正确测试连接
我们在Silex应用程序中使用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
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),以便使用基本名称空间而不是当前名称空间。。。那真是愚蠢啊哈。谢谢