php/mysqli:我应该在返回前释放_结果吗?

php/mysqli:我应该在返回前释放_结果吗?,php,mysqli,Php,Mysqli,如果从函数中调用,返回语句将立即 结束当前函数的执行,并将其参数返回为 函数调用的值 引自php手册: 如果我要写这个函数: public function check_db_for_desired_value() { //...connect to db, prepare stmt, etc. while (mysqli_stmt_fetch($stmt)) { if($column == 'desired_value') { return TRUE;

如果从函数中调用,返回语句将立即 结束当前函数的执行,并将其参数返回为 函数调用的值

引自php手册:

如果我要写这个函数:

public function check_db_for_desired_value()
{
  //...connect to db, prepare stmt, etc.
  while (mysqli_stmt_fetch($stmt))
  {
    if($column == 'desired_value')
    {
      return TRUE;  
    }
    else
    {
      return FALSE;
    }
  }
  // these commands would never get executed
  mysqli_stmt_free_result($stmt); 
  mysqli_stmt_close($stmt);
  mysqli_close($link);
}
所以(如果php手册中所说的是正确的)我的结果永远不会被释放,我的stmt永远不会关闭,我的db连接保持打开,因为我返回了一些东西并结束了函数的执行

因此,我是否应该设置变量的值,而不是返回某个值,然后在关闭所有内容后返回该值


我问,因为我的代码正在工作,我没有得到任何错误,即使我以前写过这样的函数…

你是对的,在
返回后没有执行任何操作

但您可以使用
\uu destruct
关闭连接并清除结果:

function __destruct() {
    mysqli_stmt_free_result($this->stmt); // making $stmt a variable inside class
    mysqli_stmt_close($this->stmt);
    mysqli_close($this->link);
}
只要没有对特定对象的其他引用,或者在关闭序列期间以任何顺序调用析构函数方法。-


否则,您应该在调用
return
之前移动释放和关闭按钮。

只需复制所有释放结果并在返回之前关闭即可。因此,如果您在同一个脚本中使用该函数两次,它不会抱怨任何人知道为什么我从未收到任何错误,即使我编写了这段不正确的代码?我希望收到一条消息,如“无法打开另一个数据库连接,因为其中一个数据库连接已打开”
或“内部SQL错误:2014,命令不同步;您现在无法运行此命令”重新连接并因此重新设置状态。如果您的连接不在功能范围内,则会遇到问题