PDO::pgsqlLOBOpen

Opens an existing large object stream

&reftitle.description; public ``resource``false```PDO::pgsqlLOBOpen` `string` `oid` `string` `mode`"rb"

`PDO::pgsqlLOBOpen` opens a stream to access the data referenced by `oid`. If `mode` is `r`, the stream is opened for reading, if `mode` is `w`, then the stream will be opened for writing. You can use all the usual filesystem functions, such as `fread`, `fwrite` and `fgets` to manipulate the contents of the stream.

This function, and all manipulations of the large object, must be called and carried out within a transaction.

&reftitle.parameters;

`oid`

- A large object identifier.

`mode`

- If mode is `r`, open the stream for reading. If mode is `w`, open the stream for writing.

&reftitle.returnvalues;

Returns a stream resource on success&return.falseforfailure;.

&reftitle.examples;

### A `PDO::pgsqlLOBOpen` example

Following on from the `PDO::pgsqlLOBCreate` example, this code snippet retrieves the large object from the database and outputs it to the browser.

    <?php
    $db = new PDO('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(array($some_id));
    $stmt->bindColumn('oid', $oid, PDO::PARAM_STR);
    $stmt->fetch(PDO::FETCH_BOUND);
    $stream = $db->pgsqlLOBOpen($oid, 'r');
    header("Content-type: application/octet-stream");
    fpassthru($stream);
    ?>

&reftitle.seealso;

- `PDO::pgsqlLOBCreate`
- `PDO::pgsqlLOBUnlink`
- `pg_lo_open`