PHP Australia Conference 2015

pg_lo_open

(PHP 4 >= 4.2.0, PHP 5)

pg_lo_openÖffnet ein Large Object

Beschreibung

resource pg_lo_open ( resource $connection , int $oid , string $mode )

pg_lo_open() öffnet ein Large Object in einer Datenbank und gibt einen Handler (eine Ressource) zurück, über den das Large Object modifiziert werden kann.

Warnung

Bevor Sie die Datenbankverbindung schließen, müssen Sie das Large Object wieder schließen.

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

PostgreSQL Verbindungkennung. Falls connection nicht angegeben wurde, wird die zuletzt mit pg_connect() oder pg_pconnect() geöffnete Verbindung benutzt.

oid

Der 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 Large Object Ressource oder FALSE, falls ein Fehler auftrat.

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
9 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