我只是想知道,如果启用数据库查询缓存,为什么$ query-> list_fields()方法会抛出一个空数组。这实际上是一个获取查询字段名称的Codeigniter方法。
但与此同时,如果我不启用数据库查询缓存,它可以正常工作。这个问题也出现在Windows服务器上,所以我认为环境根本不重要。
另外,我已经检查过MySQL本机函数" mysqli_fetch_field"在两个服务器(Linux和Windows)中获取字段名称。它工作正常。所以我认为这个问题只与Db查询缓存有关。
有关您的信息,我使用Codeigniter版本3。
参考:Codeigniter $this->list_fields
任何帮助将不胜感激。
答案 0 :(得分:0)
文件摘录:
并非所有数据库功能都使用缓存
最后,我们需要指出缓存的结果对象是完整结果对象的简化版本。因此,某些查询结果函数无法使用。
使用缓存的结果对象时,以下功能不可用:
num_fields()
field_names()
field_data()
free_result()
此外,缓存时两个数据库资源(result_id和conn_id)不可用,因为结果资源仅适用于运行时操作。