Pdo\Pgsql::lobOpen

(PHP 8 >= 8.4.0)

Pdo\Pgsql::lobOpenAbre um fluxo de objetos grandes existente

Descrição

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

Pdo\Pgsql::lobOpen() abre um fluxo para acessar os dados referenciados por oid. Todas as funções usuais do sistema de arquivos, como fread(), fwrite() ou fgets() podem ser usadas para manipular o conteúdo do fluxo.

Nota: Esta função e todas as manipulações de objeto grande devem ser chamadas e executadas dentro de uma transação.

Parâmetros

oid
Um identificador de objeto grande.
mode
O modo de acesso. Se mode contiver w ou +, o fluxo é aberto para leitura e escrita; caso contrário é aberto somente-leitura. Um sinalizador b (binário) não tem efeito. O padrão "rb" abre o fluxo para leitura.

Valor Retornado

Retorna um recurso de fluxo em caso de sucesso, ou false em caso de falha.

Exemplos

Exemplo #1 Exemplo de Pdo\Pgsql::lobOpen()

Seguindo o exemplo de Pdo\Pgsql::lobCreate(), este trecho de código recupera o objeto grande do banco de dados e o envia para o navegador.

<?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);
?>

Veja Também