pg_lo_create

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

pg_lo_create Crea un objeto de gran tamaño de PostgreSQL

Descripción

pg_lo_create(PgSql\Connection $connection = ?, mixed $object_id = ?): int
pg_lo_create(mixed $object_id): int

pg_lo_create() crea un objeto de gran tamaño y devuelve su OID. Los modos de acceso de PostgreSQL INV_READ, INV_WRITE y INV_ARCHIVE no son soportados: el objeto siempre puede ser creado con permisos de lectura y escritura. El modo INV_ARCHIVE ha sido eliminado de las bases de datos PostgreSQL (versión 6.3 y posteriores).

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

En lugar de utilizar la interfaz de objetos de gran tamaño (que no tiene ningún control de acceso y es engorroso de usar), se recomienda utilizar la columna de tipo bytea de PostgreSQL y pg_escape_bytea().

Nota:

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

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.

object_id

Si se proporciona el argumento object_id, la función intentará crear un objeto grande con este identificador; de lo contrario, se asignará un identificador de objeto disponible por el servidor. Este argumento depende de una funcionalidad que apareció con PostgreSQL 8.1.

Valores devueltos

Un objeto grande OID, o false en caso de error.

Historial de cambios

Versión Descripción
8.1.0 The connection parameter expects an PgSql\Connection instance now; previously, a recurso was expected.

Ejemplos

Ejemplo #1 Ejemplo con pg_lo_create()

<?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");
?>

add a note

User Contributed Notes 1 note

up
1
andrea dot galli at acotel dot com
22 years ago
<?php
// --------- OPEN CONN ---

$conn = pg_connect("host='127.0.0.1' dbname='test' user='usertest' password='passtest'");

// --------- OPEN FILE ---

$fp = fopen('logo.gif', "r");
$buffer = fread($fp, filesize('logo.gif'));
fclose($fp);

// --------- CREATE - INSERT OID ---

pg_exec($conn, "begin");

$oid = pg_locreate($conn);

$rs = pg_exec($conn,"INSERT INTO test(tipo, images) VALUES('A1', $oid);");
$handle = pg_loopen ($conn, $oid, "w");

pg_lowrite ($handle, $buffer);
pg_loclose ($handle);

pg_exec($conn, "commit");

// --------- OPEN - INSERT OID ---

$rs = pg_exec($conn, "SELECT images FROM test WHERE tipo = 'A1';");
$row = pg_fetch_row($rs, 0);

pg_exec($conn, "begin");
$loid = pg_loopen($conn, $row[0], "r");

header("Content-type: image/gif");

pg_loreadall($loid);
pg_loclose($loid);

pg_exec ($conn, "commit");

// --------- UNLINK OID ---

pg_exec($conn, "begin");

$loid = $row[0];
pg_lounlink($conn, $loid);

pg_exec ($conn, "commit");

// --------- DELETE OID ---

pg_exec($conn, "DELETE FROM test WHERE tipo = 'A1';");

// --------- CLOSE CONN ---

pg_close();
?>
To Top