【问题标题】:Mysqli::close() vs. $stmt->close()Mysqli::close() 与 $stmt->close()
【发布时间】:2014-06-26 21:31:47
【问题描述】:

对于mysqli的准备好的语句是如何在内部处理的,我有点困惑。

mysqli::prepare($query); 返回一个mysqli_stmt 对象。文档说,声明在不再需要后应立即关闭。到目前为止,一切顺利。

但是,如果我调用mysqli::close(),语句是否仍需要显式关闭?此外,语句对象是否有自己的数据库连接,并且即使在这样的情况下也能继续可靠地工作:

<?php
$oDb = new mysqli('localhost', 'root', '', 'test');
$oStmt = $oDb->prepare("INSERT INTO tbl_test (a,b,c) VALUES (?,?,?)");

$oDb->close();

$oStmt->bind_param('sss', 'Hello', 'World', '!');
$oStmt->execute();
//do some more stuff
$oStmt->close();

或者调用mysqli::close() 也会关闭所有语句?

【问题讨论】:

  • 除了你可以尝试一下,也许自己回答这个问题,这是一个很好的问题。
  • 请注意,我询问它是否会继续“可靠地”工作。我对只测试一个案例并得出结论它总是(或永远不会)工作变得谨慎。尤其是在 PHP 中。

标签: php mysqli prepared-statement


【解决方案1】:

是的,调用 mysqli::close() 也会关闭所有语句。
如果您将此函数作为代码中的最后一个运算符调用,则也不需要调用它。

所以,不要打扰。

【讨论】:

    猜你喜欢
    • 2013-11-01
    • 2011-02-22
    • 2011-02-22
    • 2012-02-23
    • 1970-01-01
    • 2012-06-06
    • 2012-04-26
    • 2022-12-27
    • 1970-01-01
    相关资源
    最近更新 更多