我正在尝试从查询结果中输出CSV。 dbutil->csv_from_result()
应该有效,但它只返回列标题。没有数据。
我将其追踪到使用system/database/DB_utility.php
的{{1}}。
对unbuffered_row()
的任何来电都会返回unbuffered_row()
。如果我将其更改为NULL
,我会得到一个结果。如果我使用row()
或unbuffered_row('array')
为什么unbuffered_row('object')
有效但row()
没有?
这是CI中的错误还是我错过了什么?
修改:unbuffered_row()
似乎无法正常工作。
编辑:似乎调用row('array')
会破坏$query->result()
。您显然无法遍历查询结果,然后将结果保存在CSV文件中。这个在CI 2中可能。
有没有办法显示查询结果并保存CSV而不运行查询两次?
答案 0 :(得分:0)
我也遇到过类似的问题,并发现了这一点:
我有这个查询:
$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);
希望这对某人有所帮助。