gpt4 book ai didi

php/mysqli : should I free_result before I return?

转载 作者:可可西里 更新时间:2023-10-31 23:41:42 24 4
gpt4 key购买 nike

If called from within a function, the return statement immediately ends execution of the current function, and returns its argument as the value of the function call.

引自 php 手册:http://php.net/manual/en/function.return.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 永远不会关闭并且我的数据库连接保持打开状态,因为我返回了一些东西并结束了函数的执行...

那么我是否应该设置一个变量的值,然后在关闭所有内容后返回这个值,而不是返回一些东西?

我问,因为我的代码可以正常工作,而且我没有收到任何错误,尽管我以前写过这样的函数......

最佳答案

你是对的,return 之后什么都没有执行。

但是你可以使用__destruct来关闭连接并清除结果:

function __destruct() {
mysqli_stmt_free_result($this->stmt); // making $stmt a variable inside class
mysqli_stmt_close($this->stmt);
mysqli_close($this->link);
}

The destructor method will be called as soon as there are no other references to a particular object, or in any order during the shutdown sequence. - PHP.NET

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

关于php/mysqli : should I free_result before I return?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15616765/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com