Dutch PHP Conference 2025 - Call For Papers

pg_lo_open

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

pg_lo_openOpen a large object

Опис

pg_lo_open(PgSql\Connection $connection, int $oid, string $mode): PgSql\Lob|false

pg_lo_open() opens a large object in the database and returns an PgSql\Lob instance so that it can be manipulated.

Увага

Do not close the database connection before closing the PgSql\Lob instance.

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

Зауваження:

This function used to be called pg_loopen().

Параметри

connection

Примірник PgSql\Connection. Якщо параметр connection не визначено, то виконується стандартне з'єднання, тобто останнє, виконане функцією pg_connect() або pg_pconnect().

Увага

Починаючи з PHP 8.1.0, використання стандартного з'єднання є застарілим.

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.

Значення, що повертаються

An PgSql\Lob instance, або false в разі помилки.

Журнал змін

Версія Опис
8.1.0 Returns an PgSql\Lob instance now; previously, a resource was returned.
8.1.0 Тепер параметр connection має бути примірником PgSql\Connection. Раніше очікувався resource.

Приклади

Приклад #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");
?>

Прогляньте також

add a note

User Contributed Notes 1 note

up
1
metator at netcabo dot pt
19 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