请问如果使用单态模式调用数据库,方法中有返回结果集,以及数据库连接对象
我知道连接对象是在析构时销毁,请问返回的结果集改如何释放,我知道可以在方法中赋值给数组然后返回数组,释放结果集,但有时候就需要返回结果集而不是数组,请问释放结果集应该如果调用?
是在类中再写一个方法比如 free() 然后在类外调用吗?感觉这样写不好,请问大家是怎么处理的啊。

解决方案 »

  1.   

    如果返回的是结果集资源,那么就没必要封装数据库操作了
    比如
    $rs = db::getInstance()->query($sql);
    $row = mysql_fetch_assoc($rs);
    你不觉得很怪异吗?封装的目的是为了简化操作,自然会丢失一些灵活性
    单例的数据库对象显然只宜缓存最后一次查询的结果集,不然无论是你想读取或释放都将因不知道操作哪个结果集而无所适从
      

  2.   

    先明确一下 结果集资源和结果集对象的区别
    结果集资源(resource)比如 mysql_query('select ...') 返回的一个资源号
    结果集对象(object) 比如 mysqli_query('select ...') 返回的一个 mysqli_result 对象你自己封装数据库类,也是可以让 db::query 返回一个对象(比如 db_result)