关闭PDO声明

时间:2015-09-27 15:44:46

标签: php mysql mysqli pdo prepared-statement

我最近决定从MySQLi大幅跳转到PDO,并且有些事情困扰我关于PDO准备好的陈述。

在MySQLi中,我会写一个典型的获取查询,如下所示:

$db = new mysqli("localhost", "user", "pass", "mydb");
$sql = "SELECT firstCol, secondCol FROM testTable WHERE thirdCol=?";
$stmt = $db->prepare($sql);
$stmt->bind_param("s", $thirdCol);
$stmt->execute();
while( ($row = $stmt->fetch()) )
{
   //do something
}
$stmt->close();
$db->close();

当然要进行适当的错误检查。在查询之后我总是关闭语句和数据库连接。使用PDO时,我通过将数据库处理程序设置为null来关闭连接,如下所示:

$db = null;

但声明怎么样?我找到了一篇帖子here,建议使用unsetcloseCursor。哪一个更好?我应该像连接那样将它设置为null吗?

1 个答案:

答案 0 :(得分:4)

  

当然会进行适当的错误检查。

我确信错误检查不太合适。要检查错误,您必须设置单个mysqli配置选项(以及PDO)并单独执行特定查询。

  

在查询之后,我总是关闭语句和数据库连接。

说到数据库连接,如果你不得不在同一个脚本中运行多个查询,那么你做错了完全错误。因为您必须再次打开连接以运行另一个查询,这会毫无理由地减慢您的应用程序。

  

使用PDO时,我通过将数据库处理程序设置为null来关闭连接

就像使用mysqli一样,如果你在脚本结束时关闭它,那没关系,但是没必要。但如果你在每次查询后关闭它,那就错了!

您必须只连接一次,而不是一直使用该单个连接变量。

截至发言,这取决于你。大多数time语句变量被覆盖,这使得先前的实例设置为null。调用函数时,函数结束时,其所有变量都设置为null。当php脚本结束时,它的所有变量都会再次设置为null。因此,通常没有什么可担心的。