【问题标题】:PHP - close prepared stmtPHP - 关闭准备好的stmt
【发布时间】:2016-02-03 05:26:51
【问题描述】:

我指的是this

我有类似的东西

  function getData(){
     $query = "SELECT * FROM users WHERE emailID=?";
     $stmt = mysqli_prepare($query);
     if(false == $stmt){
         //handleerror Call
     }
     $bindParam = mysqli_stmt_bindParam($stmt,"s","a@a.com");
     if(false == $bindParam){
       **Do I need to close stmt here?**
       //handleError
     }
     $execute = mysqli_stmt_execute($stmt);
     if(false == $execute){
       **Do I need to close stmt here?**
       //handle error
     }
    **Or Stmt will automatically get closed at the end of a function?**
  }

关于如何关闭 stmt 有什么建议吗?

我怀疑我应该在哪里打电话?或者 PHP 会在函数结束时自动关闭每个语句?因为范围到此为止。

我知道怎么打电话。但是我想知道我应该在这种情况下调用还是在函数结束时自动关闭php。

【问题讨论】:

  • mysqli_close_stmt($stmt) php 手册页有什么不明白的地方?
  • @CharlotteDunois 我怀疑我应该在哪里打电话?或者 PHP 会在函数结束时自动关闭每个语句?因为范围到此为止。
  • 我不认为你需要手动关闭语句,只要你不获取大量数据并且需要内存。

标签: php mysqli


【解决方案1】:

如果你不自己关闭它,PHP 会在脚本/函数的末尾执行它。但是,当您不再需要它时,您“应该”关闭它。例如,当发生错误时,您可能不需要它。

function getData(){
 $query = "SELECT * FROM users WHERE emailID=?";
 $stmt = mysqli_prepare($query);
 if(false == $stmt){
     //handleerror Call
 }
 $bindParam = mysqli_stmt_bindParam($stmt,"s","a@a.com");
 if(false == $bindParam){
   //handleError
   mysqli_close_stmt($stmt)
   print "Binding failed";
 }
 $execute = mysqli_stmt_execute($stmt);
 if(false == $execute){
   mysqli_close_stmt($stmt)
   //handle error
 }
//if you haven't closed, PHP will close it now
}

【讨论】:

    【解决方案2】:
    $stmt->close();
    

    它将关闭语句。

    【讨论】:

    • 他甚至没有使用对象!
    猜你喜欢
    • 2017-03-13
    • 1970-01-01
    • 2013-07-09
    • 2012-06-07
    • 2015-03-09
    • 1970-01-01
    • 2013-06-09
    • 2014-09-16
    相关资源
    最近更新 更多