(PHP 5 >= 5.1.2, PHP 7, PECL pdo_pgsql >= 1.0.2)
PDO::pgsqlLOBOpen — Abrir un flujo de un objeto grande existente
$oid
[, string $mode
= "rb"
] )
PDO::pgsqlLOBOpen() abre un flujo para acceder a los datos
a los que hace referencia oid
. Si mode
es r, el flujo será abierto para lectura; si
mode
es w, el flujo será
abierto para escritura. Se pueden utilizar todas las funciones de sistema de ficheros usuales,
tales como fread(), fwrite() y
fgets() para manipular el contenido del flujo.
Nota: Esta función, y todas las manipulaciones del objeto grande, debe ser invocada y realizada dentro de una transacción.
oid
Un identificador de objeto grande.
mode
Si el modo es r, se abre el flujo para lectura. Si el modo es w, se abre el flujo para escritura.
Devuelve un recurso de flujo en caso de éxito o FALSE
en caso de error.
Ejemplo #1 Un ejemplo de PDO::pgsqlLOBOpen()
Siguiendo el ejemplo de PDO::pgsqlLOBCreate(), este trozo de código recupera el objeto grande de la base de datos y lo envía al navegador.
<?php
$bd = new PDO('pgsql:dbname=test host=localhost', $usuario, $contraseña);
$bd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$bd->beginTransaction();
$sentencia = $bd->prepare("select oid from BLOBS where ident = ?");
$sentencia->execute(array($some_id));
$sentencia->bindColumn('oid', $oid, PDO::PARAM_STR);
$sentencia->fetch(PDO::FETCH_BOUND);
$flujo = $bd->pgsqlLOBOpen($oid, 'r');
header("Content-type: application/octet-stream");
fpassthru($flujo);
?>