PHP Unconference Europe 2015

pg_lo_open

(PHP 4 >= 4.2.0, PHP 5)

pg_lo_openOpen a large object

Description

resource pg_lo_open ( resource $connection , int $oid , string $mode )

pg_lo_open() opens a large object in the database and returns large object resource so that it can be manipulated.

Warning

Do not close the database connection before closing the large object resource.

To use the large object interface, it is necessary to enclose it within a transaction block.

Note:

This function used to be called pg_loopen().

Parameters

connection

PostgreSQL database connection resource. When connection is not present, the default connection is used. The default connection is the last connection made by pg_connect() or pg_pconnect().

oid

The OID of the large object in the database.

mode

Can be either "r" for read-only, "w" for write only or "rw" for read and write.

Return Values

A large object resource or FALSE on error.

Examples

Example #1 pg_lo_open() example

<?php
   $database 
pg_connect("dbname=jacarta");
   
pg_query($database"begin");
   
$oid pg_lo_create($database);
   echo 
"$oid\n";
   
$handle pg_lo_open($database$oid"w");
   echo 
"$handle\n";
   
pg_lo_write($handle"large object data");
   
pg_lo_close($handle);
   
pg_query($database"commit");
?>

See Also

add a note add a note

User Contributed Notes 1 note

up
0
metator at netcabo dot pt
9 years ago
Just for the record, a user must be a superuser (database owner) in order to invoke pg_lo_open() (though pg_lo_create() may be invoked...). This opens a gigantic security hole in the db. If a user is not a superuser, db will raise an error with message "Can't create Large Object.".
Thus, imho, one should use pg_escape_bytea() instead.
To Top