2014-01-24 90 views
0

返回我有一个功能做一个简单的查询并返回结果集:mysqli_free_result()的结果集从功能

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可变我那里创建和释放的是,还是我在$admin_result和原$result创造$result副本被释放的时候,当函数返回?然后我还需要免费$admin_result就像我在做什么?我只是想知道在这个过程中发生了什么。如果是内存管理,我会习惯C语言,在这里会遇到一些问题。

回答

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/>'; 

如果两个散列相同,这意味着它们是同一个对象