我试图从查询结果中输出CSV。dbutil->csv_from_result()
应该可以工作,但它只返回列标题。不包括任何数据。
我追踪到了system/database/DB_utility.php
,它使用unbuffered_row()
。
对unbuffered_row()
的任何调用都返回NULL
。如果我将其更改为row()
,就会得到一个结果。如果我使用unbuffered_row('array')
或unbuffered_row('object')
,没有什么区别。
为什么row()
unbuffered_row()
不工作,而unbuffered_row()
却不工作?
这是CI中的一个bug,还是我遗漏了什么?
编辑:row('array')
似乎也不起作用。
编辑:似乎调用$query->result()
破坏了dbutil->csv_from_result($query)
。显然,您不能遍历查询结果,然后将结果保存在CSV文件中。这在CI 2中是可能的。
有没有办法显示查询结果和保存CSV而不运行两次查询?
发布于 2018-11-12 17:14:37
我也遇到过类似的问题,发现:
我有一个疑问:
$query = $this->db->query("SELECT * FROM tablename");
print_r($query);
然后我得到了这个,unbuffered_row
工作得很好:
CI_DB_oci8_result Object
(
[stmt_id] => Resource id #106
[curs_id] =>
[limit_used] =>
[commit_mode] => 32
[conn_id] => Resource id #91
[result_id] => 1
[result_array] => Array
(
)
[result_object] => Array
(
)
[custom_result_object] => Array
(
)
[current_row] => 0
[num_rows] =>
[row_data] =>
)
但是,如果在获得不同的$query->num_rows()
对象之前调用CI_DB_oci8_result
,而unbuffered_row
没有工作,则返回null
$query = $this->db->query("SELECT * FROM tablename");
echo $query->num_rows();
print_r($query);
希望这能帮上忙。
https://stackoverflow.com/questions/49212236
复制相似问题