PDO::pgsqlLOBOpen
(PHP 5 >= 5.1.2, PHP 7, PECL pdo_pgsql >= 1.0.2)
PDO::pgsqlLOBOpen — Открывает поток для существующего большого объекта
Описание
$oid
, string $mode
= "rb"
) : resource|false
Функция PDO::pgsqlLOBOpen() открывает поток к
большому объекту (LOB) заданному с помощью oid
.
Если mode
задан как r
, поток открывается
для чтения. Если mode
задан как w
, то
для записи. Для манипуляции с потоком вы можете использовать обычные файловые
функции, такие как fread(), fwrite() и
fgets().
Замечание: Эта функция и все манипуляции с LOB должны совершаться в транзакции.
Список параметров
-
oid
-
Идентификатор большого объекта.
-
mode
-
Если
r
, то поток открывается на чтение. Еслиw
, то поток открывается на запись.
Возвращаемые значения
Возвращает ресурс потока в случае успеха или false
в случае возникновения ошибки.
Примеры
Пример #1 Пример использования PDO::pgsqlLOBOpen()
Продолжая пример из описания PDO::pgsqlLOBCreate(), этот код извлекает LOB из БД и выводит его в браузер.
<?php
$db = new PDO('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);
?>
Смотрите также
- PDO::pgsqlLOBCreate() - Создать новый большой объект (LOB)
- PDO::pgsqlLOBUnlink() - Удалить большой объект
- pg_lo_open() - Открывает большой объект базы данных