(PHP 8 >= 8.4.0)
Pdo\Pgsql::lobOpen — Abre un flujo sobre un objeto grande existente
Pdo\Pgsql::lobOpen() abre un flujo para acceder
a los datos referenciados por oid.
Todas las funciones habituales del sistema de ficheros, tales como fread(),
fwrite() o fgets() pueden ser utilizadas
para manipular el contenido del flujo.
Nota: Esta función, y todas las manipulaciones del objeto grande, deben ser llamadas y realizadas dentro de una transacción.
oidmodemode contiene
w o +, el flujo se abre para
lectura y escritura; en caso contrario, se abre solo para lectura. Un
indicador b (binario) no tiene efecto. El valor
predeterminado "rb" abre el flujo para lectura.
Devuelve un recurso de flujo en caso de éxito, o false si ocurre un error
Ejemplo #1 Ejemplo de Pdo\Pgsql::lobOpen()
Según el ejemplo de Pdo\Pgsql::lobCreate(), este código extrae el objeto grande de la base de datos y lo devuelve al 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);
?>