Opens an existing large object stream

- « PDO::pgsqlLOBCreate

- PDO::pgsqlLOBUnlink »

- PHP Manual
- PostgreSQL (PDO)
- Opens an existing large object stream

# PDO::pgsqlLOBOpen

(PHP 5 >= 5.1.2, PHP 7, PHP 8, PECL pdo_pgsql >= 1.0.2)

PDO::pgsqlLOBOpen — Opens an existing large object stream

### Description

public PDO::pgsqlLOBOpen(string `$oid`, string `$mode` = "rb"): resource|false

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.

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

### 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.

### Return Values

Returns a stream resource on success or `false` on failure.

### Examples

Example #1 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);?>

### See Also

- PDO::pgsqlLOBCreate() - Creates a new large object
- PDO::pgsqlLOBUnlink() - Deletes the large object
- pg_lo_open() - Open a large object