从函数返回的结果集上的mysqli_free_result()

时间:2014-01-24 06:07:40

标签: php mysqli

我有一个函数做一个简单的查询并返回结果集:

function getAdmins($dbcon) {

    $qry  = "SELECT * ";
    $qry .= "FROM admins ";
    $result = mysqli_query($dbcon, $qry);
    if (!$result) die("Admin query failed");

    return $result;

}

我想了解当我这样做时究竟发生了什么:

$admin_result = getAdmins($dbcon);
// do stuff with $admin_result
mysqli_free_result($admin_result);

我是否将getAdmins()的引用返回到我在那里创建的$result变量并释放了它,或者我在$result中创建了$admin_result的副本和原始版本当函数返回时,$result被释放?然后我还需要像我一样免费$admin_result吗?我只是想知道这个过程在幕后发生了什么。我已经习惯了C,如果它是内存管理会出现一些问题。

1 个答案:

答案 0 :(得分:1)

你可以使用spl_object_hash来检测$ admin_result和$ result是否是同一个对象。

getAdmins函数中的

echo 'hash of $result is '. spl_object_hash($result) . '<br/>';
return $result;

然后

$admin_result = getAdmins($dbcon);
echo 'hash of $admin_result is '. spl_object_hash($admin_result) . '<br/>';

如果两个哈希值相同,则意味着它们是同一个对象