CodeIgniter 3.1.7 unbuffered_row()返回NULL但row()有效

时间:2018-03-10 17:57:10

标签: codeigniter codeigniter-3

我正在尝试从查询结果中输出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而不运行查询两次?

1 个答案:

答案 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);

希望这对某人有所帮助。