(PHP 8 >= 8.4.0)
Pdo\Pgsql::lobOpen — Открывает поток для существующего большого объекта
Метод Pdo\Pgsql::lobOpen() открывает поток для доступа к данным,
на которые ссылается oid
.
Для работы с содержимым потока можно использовать все обычные функции файловой системы,
такие как функция fread(), fwrite() или fgets().
Замечание: Функция и все манипуляции с большим объектом должны вызываться и выполняться в рамках транзакции.
oid
mode
r
, поток открывается для чтения.
Если указано значение w
, поток открывается для записи.
Метод возвращает ресурс потока в случае успешного выполнения или false
, если возникла ошибка.
Пример #1 Пример использования метода Pdo\Pgsql::lobOpen()
Продолжая пример метода Pdo\Pgsql::lobCreate(), этот фрагмент кода извлекает большой объект из базы данных и выводит его в браузер.
<?php
$db = new Pdo\Pgsql('pgsql:dbname=test host=localhost', $user, $pass);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db->beginTransaction();
$stmt = $db->prepare("SELECT oid FROM BLOBS WHERE ident = ?");
$stmt->execute(array($some_id));
$stmt->bindColumn('oid', $oid, PDO::PARAM_STR);
$stmt->fetch(PDO::FETCH_BOUND);
$stream = $db->pgsqlLOBOpen($oid, 'r');
header("Content-type: application/octet-stream");
fpassthru($stream);
?>