php: pdo читать clob без привязки

$query = "select id, xmldata from xmlcontent where id = '586655' OR id = '671347'"

$db = new PDO(...);
$stmt = $db->prepare($query);
$stmt->execute();
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);

var_dump($result);

выход:

...
["XMLDATA"]=> resource(33) of type (stream)
...

как я могу это прочитать? я пытаюсь:

stream_get_contents()

но ничего

с

stream_get_contents()

иногда читаю небольшой текст, я хотел бы использовать общий код из всех SQL-ов без параметров привязки :(


person ZiTAL    schedule 20.01.2012    source источник
comment
Что произойдет, если вы вызовете stream_get_meta_data в ресурс? У вас должен получиться массив с полезной информацией.   -  person Charles    schedule 21.01.2012
comment
я попробую в понедельник, когда вернусь на работу, спасибо :)   -  person ZiTAL    schedule 21.01.2012
comment
Массив ( [stream_type] =› pdo_oci blob stream [mode] =› r+b [unread_bytes] =› 0 [seekable] =› [timed_out] =› [blocked] =› 1 [eof] =› ) @Charles   -  person ZiTAL    schedule 23.01.2012
comment
Итак, он доступен только для чтения, не доступен для поиска, не eof и заблокирован. Странно. К сожалению, у меня нет предложений...   -  person Charles    schedule 23.01.2012
comment
Из любопытства, вы используете базу данных Oracle?   -  person Rauni Lillemets    schedule 04.03.2013
comment
Рауни да, я использую базу данных оракула   -  person ZiTAL    schedule 04.03.2013


Ответы (1)


Возможно, вы пытаетесь дважды прочитать один и тот же поток или просто используете старую библиотеку pdo_oci с ошибкой (для нескольких записей будет возвращен только последний поток).

Для последней версии, скомпилированной из исходного кода php на сервере Ubuntu, я просто использую ленивую загрузку в классе ActiveRecord:

public function getFullText()
{
    if (is_resource($this->fulltext)) {
        $this->fulltext = stream_get_contents($this->fulltext);
    }
    return $this->fulltext;
}

Где fulltext это CLOB.

person UnstableFractal    schedule 28.09.2015
comment
PDO_OCI устарел, и я могу скомпилировать его для проверки :( - person ZiTAL; 29.09.2015
comment
Это устарело? Я думал, что его просто забросили как отдельное расширение из-за встроенной версии в сам PHP? - person UnstableFractal; 29.09.2015
comment
в репозиториях нет расширения oracle pdo для php - person ZiTAL; 30.09.2015
comment
Он был встроен в сам PHP. - person UnstableFractal; 30.09.2015
comment
в гну/линукс? документация по установке? - person ZiTAL; 01.10.2015
comment
Лучший ответ, который я нашел Однако вы столкнетесь с множеством проблем с Oracle и PDO_OCI. Например, BLOB и CLOB. Мне удалось решить большинство из них на данный момент, но это не было явными проблемами. - person UnstableFractal; 01.10.2015