Codeigniter $query->list_fields()在启用db查询缓存时不起作用


Codeigniter $query->list_fields() not working if db query cache is enabled

我只是想知道,为什么$query->list_fields()方法抛出一个空数组,如果我启用DB查询缓存。这实际上是一个获取查询字段名称的Codeigniter方法。

但在同一时间,它的工作很好,如果我不启用db查询缓存。这个问题也在Windows服务器上,所以我相信环境根本不重要。

另外,我已经检查了MySQL本地函数"mysqli_fetch_field"以获得服务器(Linux和Windows)中的字段名称。它工作得很好。所以我相信这个问题只与Db查询缓存。

为您的信息,我使用Codeigniter版本3。

Ref: Codeigniter $this->list_fields

任何帮助都会很感激。

节选自文档:

不是所有的数据库函数都可以使用缓存

最后,我们需要指出,缓存的结果对象是完整结果对象的简化版本。由于这个原因,一些查询结果函数不能使用。

当使用缓存结果对象时,以下函数不可用:

num_fields()
field_names()
field_data()
free_result()

另外,两个数据库资源(result_id和conn_id)在缓存时不可用,因为结果资源只适用于运行时操作。