pg_lo_open

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

pg_lo_open Abre un objeto de gran tamaño de PostgreSQL

Descripción

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

pg_lo_open() abre un objeto grande en la base de datos y devuelve una instancia de PgSql\Lob para que pueda ser manipulado.

Advertencia

No cerrar la conexión a la base de datos antes de cerrar la instancia PgSql\Lob.

Para utilizar un objeto de gran tamaño (lo), es necesario hacerlo dentro de una transacción.

Nota:

Anteriormente, esta función se llamaba pg_loopen().

Parámetros

connection

An PgSql\Connection instance. When connection is unspecified, the default connection is used. The default connection is the last connection made by pg_connect() or pg_pconnect().

Advertencia

As of PHP 8.1.0, using the default connection is deprecated.

oid

El OID del objeto de gran tamaño en la base de datos.

mode

Puede ser "r" para solo lectura, "w" para solo escritura o "rw" para lectura y escritura.

Valores devueltos

Una instancia PgSql\Lob, o false en caso de error.

Historial de cambios

Versión Descripción
8.1.0 Ahora devuelve una instancia de PgSql\Lob; anteriormente, se devolvía un recurso.
8.1.0 The connection parameter expects an PgSql\Connection instance now; previously, a recurso was expected.

Ejemplos

Ejemplo #1 Ejemplo con pg_lo_open()

<?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, "datos de objeto de gran tamaño");
pg_lo_close($handle);
pg_query($database, "commit");
?>

Ver también

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