关闭 PDO 语句

Close PDO 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;

但是声明呢?我发现 post here 建议使用 unsetcloseCursor 。哪一个更好?我应该像连接一样将它设置为null吗?

with the appropriate error checking of course.

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

After the query I always close the statement and the database connection.

说到数据库连接,如果您不得不在同一个脚本中 运行 多个查询,那您就完全错了。由于您必须再次打开与 运行 另一个查询的连接,这无缘无故地减慢了您的应用程序。

When using PDO I close the connection by setting the database handler to null

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

您只需连接一次,而不是一直使用那个连接变量。

至于声明,由你决定。大多数时间语句变量被覆盖,这使得先前的实例设置为空。当您调用一个函数时,它的所有变量在函数结束时都设置为 null。当 php 脚本结束时,它的所有变量再次设置为空。因此,通常没有什么可担心的。