Pdo\Pgsql::lobOpen
PHP Manual
PHP Manual»Pdo\Pgsql»Pdo\Pgsql::lobOpen

Pdo\Pgsql::lobOpen

(PHP 8 >= 8.4.0)

Pdo\Pgsql::lobOpen — Открывает поток большого объекта

Описание

public function Pdo\Pgsql::lobOpen(string $oid, string $mode = "rb"): resource|false

Метод Pdo\Pgsql::lobOpen() открывает поток для доступа к данным, на которые ссылается идентификатор oid. Работу с содержимым потока поддерживают все стандартные функции файловой системы наподобие fread(), fwrite() или fgets().

Замечание:

Функция и все манипуляции с большим объектом должны вызываться и выполняться в рамках транзакции.

Список параметров

oid

Идентификатор большого объекта.

mode

Режим доступа. При передаче в параметр mode значения w или + поток открывается для чтения и записи; иначе поток открывается только для чтения. Флаг b, которым устанавливается двоичный режим, игнорируется. Предустановленное значение "rb" открывает поток для чтения.

Возвращаемые значения

При успешном выполнении метод возвращает ресурс потока или 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([$some_id]);
$stmt->bindColumn('oid', $oid, PDO::PARAM_STR);

$stmt->fetch(PDO::FETCH_BOUND);
$stream = $db->lobOpen($oid, 'r');

header("Content-type: application/octet-stream");
fpassthru($stream);

Смотрите также

To Top