2012-04-17 1 views
2

私は私のオラクルのデータを持っているとコード・イグナイタのエラー・クローブ(oracle)値、それを解決する方法は?

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

ますprint_r($結果)CodeIgniterのからそれを取り出す:データを取得

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' 

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 
       ) 
     ) 
) 

データモデル

印刷:

remark2 
(empty) 
(empty) 

なぜ最初のデータには3番目のデータの値がありますか? 3番目のデータが空になりますか?

+0

'print_r($ r-> result_array())'の結果はどうなりますか? 'foreach($ result as $ single_result)'を使ってデータを検索すると何が印刷されますか? – castt

答えて

1

コードネイターで覚えておくべきことは2つだけです。

返されるデータの行が1つしかない場合は、row_array().を使用し、$result = $r->row_array();の場合は$result['column_name'];を使用します。

複数の行の場合は、結果が$result = $r->result();のresult()を使用しており、このように複数の行をループする必要があります。foreach $result as $val { $val->column_name; }、​​は値を与えます。

+0

yups ..私の間違ったコードを申し訳ありません.. しかし、データが複数のレコードを持っている場合、clob型のすべてのOracleデータが実際の値を持たないことがわかりました。 decriptorは常にid 80を指しています – kreamik

関連する問題