2012-04-17 56 views
2

我在我的Oracle數據和笨代碼點火器中的錯誤clob(oracle)值,如何解決?

$this->db->select('detail'); 
$r = $this->db->get($tableName); 
$result = $r->result(); 

的print_r($結果)檢索:

Array 
(
    [0] => stdClass Object 
     (
      [DETAIL] => OCI-Lob Object 
       (
        [descriptor] => Resource id #80 
       ) 
     ) 

    [1] => stdClass Object 
     (
      [DETAIL] => 
     ) 

    [2] => stdClass Object 
     (
      [DETAIL] => OCI-Lob Object 
       (
        [descriptor] => Resource id #80 
       ) 
     ) 
) 

數據模型:

function get_ora_blob_value($value) 
{ 
    $size = $value->size(); 
    $result = $value->read($size); 
    return ($result)?$result:NULL; 
} 

檢索數據:

echo $this->data->get_ora_blob_value($result[0][DETAIL]); // should be 'remark1' 
echo "<br />"; 
echo $this->data->get_ora_blob_value($result[1][DETAIL]); // should be null 
echo "<br />"; 
echo $this->data->get_ora_blob_value($result[2][DETAIL]); // should be 'remark2' 

印:

remark2 
(empty) 
(empty) 

爲什麼第一個數據有第三個數據的值?第三個數據變空了?

+0

'print_r($ r-> result_array())'的結果是什麼?如果使用'foreach($ result as $ single_result)'檢索數據,會打印什麼? – castt 2012-10-03 07:23:07

回答

1

在codeigniter中只有兩件事情需要記住。

如果你知道你只有一行數據要返回,那麼你必須使用row_array().在你的情況下$result = $r->row_array();並檢索其值,您將使用$result['column_name'];

在多行的情況下,我們以這種方式foreach $result as $val { $val->column_name; }使用的結果(),你的情況$result = $r->result();,你必須遍歷這些多行,​​會給你的價值。

+0

yups ..對不起,我錯誤的代碼.. 但我發現在clob類型的所有oracle數據不會有真正的價值,如果數據有多個記錄。 正如你所看到的,總是指向id 80 – kreamik 2012-10-16 03:51:53