正确读取多个CLOB数据-PHP / Oracle

时间:2018-08-21 15:33:16

标签: php oracle clob

在oracle DB中,我在表中有CLOB列。 当我执行select命令时,要获取该表的所有数据,结果将仅向我显示DB中注册的第一个CLOB。 例如,我有一个表称为“新闻”。该表具有:

parentFrame

在Oracle中,我有一个函数可以执行:

|---------------------|-----------------------|------------------------|
|  New_Id (Number)    |  New_Title (Varchar2) |  New_Content (CLOB)    |
|---------------------|-----------------------|------------------------|
|          1          |       Title Test 1    |     Content test 1     |
|---------------------|-----------------------|------------------------|
|          2          |       Title Test 2    |     Content test 2     |
|---------------------|-----------------------|------------------------|
|          3          |       Title Test 3    |     Content test 3     |
|---------------------|-----------------------|------------------------|
|          4          |       Title Test 4    |     Content test 4     |
|---------------------|-----------------------|------------------------|

我已经测试了此功能,并且工作正常!

php中的PDO:

FOR linha IN (SELECT New_Id, New_Title, New_Content FROM New)
  LOOP
    outList := news_obj( line.New_Id, line.New_Title, line.New_Content);
    pipe row(outList );
  END LOOP;

然后设置对象:

public function selectDB($sql,$params=null,$class=null)
{
    $query=$this->connect()->prepare($sql);
    $query->execute($params);

    if(isset($class)){
        $rs = $query->fetchAll(PDO::FETCH_CLASS,$class) or die(print_r($query->errorInfo(), true));
    }else{
        $rs = $query->fetchAll(PDO::FETCH_OBJ) or die(print_r($query->errorInfo(), true));
    }

    self::__destruct();
    return $rs;
}

查询结果正确地显示了new_id和new_title,但是new_content列仅显示了所有数据的第一个数据(内容测试1)。 结果显示如下:

for($i=0; $i < count($array); $i++){
    $objNot = new news();
    $objNot->setNew_id($array[$i]->NEW_ID);
    $objNot->setNew_title($array[$i]->NEW_TITLE);
    $objNot->setNew_content(stream_get_contents($array[$i]->NEW_CONTENT));
    array_push($array2, $objNot);
}
return array2;

缺少什么?有错吗?

0 个答案:

没有答案