2012-10-25 64 views
-1

当我使用try catch块,例如:PHP,PDO,SQL,尝试捕捉,连接

try{ 
    require_once('../php/connect.php'); 
    $dbh = db::getInstance(); 
    // What i am trying to understand should i close the connection here before the header? 
    header("Location: x.php"); 
    } 
} catch(PDOException $e){ 
    require_once('err.php'); 
} 
$dbh = null; // Or should i close the connection here? 

是对 “解释” 行之后,甚至得到 “5”,谢谢大家,有一个很好的天。

+0

这根本没有意义。您正在设置$ dbh,如果没有抛出异常,您将发送一个Location标头,它将退出脚本。我没有看到你的问题。 – jonas

+1

你意识到你有双重错误吗? – Layke

+0

我很抱歉,如果我的代码没有任何意义,它只是它的代码的一部分,在连接到标题之间时,您可以在按下时发送问题发送连接下方的代码,将数据输入到数据库中,标题带你到你的问题。 –

回答

3

由于您在header()(即recommended)之后未使用exit,您的代码将继续执行。

因此,它不一样,如果你把第4行或10.此外,不管由prodigitalson指出,这样做没有必要明确close the database connection

+0

如果我把你的权利,标题将等待,直到脚本完成,然后把用户到x.php的位置,当你退出;在标题之后,你正在查看脚本/连接的其余部分,我确实在连接链接处看到了php手动使用catch块上的die(),如果你能告诉我,Doe的catch块会自动关闭连接吗?如果它是doe的,那么我明白,使用die()的手册将不会继续解释代码,或者如果catch不会关闭连接,die()将关闭连接并停止要解释的代码。 –

+0

你在'header()'后面使用'exit'是正确的。不,catch不会自动关闭连接。当PHP退出时,连接会自动关闭 - 无论是正常还是显式,退出,死亡等。 –

+0

非常感谢Jason。 –

1

根本不需要关闭连接。当php退出时它将被关闭。然而,你没有在header之后调用exit ...

虽然你的代码并没有生成sesne,但是如果db连接成功了,你为什么要重定向而没有做任何事情?如果使用头,我会认为你会叫它重定向到一个错误页面(即在你的catch块)。