(PHP 5 >= 5.1.2, PHP 7, PHP 8, PECL pdo_pgsql >= 1.0.2)
PDO::pgsqlLOBOpen — Abrir un flujo de un objeto grande existente
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);
?>