2014-01-24 54 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/>'; 

如果兩個散列相同,這意味着它們是同一個對象