pg_lo_open

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

pg_lo_openÖffnet ein Large Object

Beschreibung

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

pg_lo_open() öffnet ein Large Object in einer Datenbank und gibt eine PgSql\Lob-Instanz zurück, über die das Large Object modifiziert werden kann.

Warnung

Bevor die Datenbankverbindung geschlossen wird, müssen die PgSql\Lob-Instanzen wieder geschlossen werden.

Um die Large Object- (lo) Schnittstelle benutzen zu können, müssen die Kommandos innerhalb einer Transaktion ausgeführt werden.

Hinweis:

Diese Funktion ersetzt die Funktion pg_loopen().

Parameter-Liste

connection

Eine PgSql\Connection-Instanz. Falls connection nicht angegeben wurde, wird die Standardverbindung benutzt. Das ist die zuletzt mit pg_connect() oder pg_pconnect() aufgebaute Verbindung.

Warnung

Seit PHP 8.1.0 ist die Verwendung der Standardverbindung veraltet.

oid

Die OID des Large Objects in der Datenbank.

mode

Dies kann entweder "r" für nur lesen, "w" für nur schreiben oder "rw" für lesen und schreiben sein.

Rückgabewerte

Eine PgSql\Lob-Instanz. Bei einem Fehler wird false zurückgegeben.

Changelog

Version Beschreibung
8.1.0 Gibt nun eine PgSql\Lob-Instanz zurück; vorher wurde eine Ressource zurückgegeben.
8.1.0 Der Parameter connection erwartet nun eine PgSql\Connection-Instanz; vorher wurde eine Ressource erwartet.

Beispiele

Beispiel #1 pg_lo_open()-Beispiel

<?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, "Daten des Large Objects");
pg_lo_close($handle);
pg_query($database, "commit");
?>

Siehe auch

add a note add a note

User Contributed Notes 1 note

up
0
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