PHP PDO:何时正确结束连接

时间:2011-12-01 19:08:30

标签: php pdo

我正在使用带有try ... catch语句的PDO。如果我理解正确的话,我想和你们确认一下。我是否先将$dbhandler = NULL 放在 throw

之前
$dbhandler = NULL;
if(!$sthandler->rowCount()) throw new invalidUplineException();

之后投掷

if(!$sthandler->rowCount()) throw new invalidUplineException();
$dbhandler = NULL;

3 个答案:

答案 0 :(得分:0)

关闭PDO连接就像这样简单:

$db = new PDO($dsn, $username, $password); // Make connection
$db = NULL; // Close connection

答案 1 :(得分:0)

使用刚刚设置为null的引用是错误的。因此,存储行计数,然后将其设置为null:

$rowCount = $sthandler->rowCount();
$sthandler = null;
if(!$rowCount) {  throw new invalidUplineException(); }

“投掷之后”可以起作用,但仅限于没有抛出异常的情况。

答案 2 :(得分:0)

当抛出异常时,脚本执行会跳转到下一个匹配的catch()块(如果您在try{}块内)或完全停止(如果未捕获异常)。此行为与PDO无关,它是异常在支持它们的所有语言中的工作方式。因此,第二个示例中的$dbhandler = NULL;部分将永远不会被执行。这是一个你可以运行的简单测试:

<?php

try{
    throw new Exception('This exception will be caught');
    echo 'Exception thrown, this line will not run' . PHP_EOL;
}catch(Exception $e){
    echo 'Exception was caught as expected' . PHP_EOL;
}

throw new Exception('This exception will not be caught. Script ends here.');
echo 'Exception thrown, this line will not run either.' . PHP_EOL;