我只是想知道,为什么$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)在缓存时不可用,因为结果资源只适用于运行时操作。