php – 关闭PDO语句

我最近决定从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的帖子,建议使用unset或closeCursor.哪一个更好?我应该像连接一样将它设置为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一样,如果你在脚本结束时关闭它,那没关系,但没必要.但如果你在每次查询关闭它,那就错了!

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

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

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...