CascadiaPHP 2024

pg_lo_open

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

pg_lo_openAbra um objeto grande

Descrição

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

pg_lo_open() abre um objeto grande no banco de dados e retorna uma instância PgSql\Lob para que possa ser manipulado.

Aviso

Não feche a conexão com o banco de dados antes de fechar a instância PgSql\Lob.

Para usar a interface de objeto grande, é necessário incluí-la em um bloco de transação.

Nota:

Esta função costumava ser chamada de pg_loopen().

Parâmetros

connection

Uma instância de PgSql\Connection. Quando o parâmetro connection não for especificado, a conexão padrão será usada. A conexão padrão é a última conexão feita por pg_connect() ou pg_pconnect().

Aviso

A partir do PHP 8.1.0, usar a conexão padrão tornou-se defasado.

oid

O OID do objeto grande no banco de dados.

mode

Pode ser "r" para somente leitura, "w" para somente gravação ou "rw" para leitura e gravação.

Valor Retornado

Uma instância PgSql\Lob, ou false em caso de falha.

Registro de Alterações

Versão Descrição
8.1.0 Retorna uma instância PgSql\Lob agora; anteriormente, um resource era retornado.
8.1.0 O parâmetro connection agora espera uma instância de PgSql\Connection; anteriormente, um resource era esperado.

Exemplos

Exemplo #1 Exemplo de 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, "large object data");
pg_lo_close($handle);
pg_query($database, "commit");
?>

Veja Também

add a note

User Contributed Notes 1 note

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