pg_lo_create

(PHP 4 >= 4.2.0, PHP 5)

pg_lo_createErzeugt ein Large Object

Beschreibung

int pg_lo_create ([ resource $connection [, mixed $object_id ]] )
int pg_lo_create ( mixed $object_id )

pg_lo_create() erzeugt ein Large Object und gibt dessen dessen OID zurück. Die Zugriffsmethoden von PostgreSQL, INV_READ, INV_WRITE und INV_ARCHIVE werden nicht unterstützt. Ein Large Object wird immer mit Lese- und Schreibzugriff erzeugt. INV_ARCHIVE wurde von PostgreSQL (ab Version 6.3 und höher) entfernt.

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

Anstelle der Large Object Schnittstelle (für die es keine Zugriffssteuerung gibt und deren Benutzung etwas schwerfällig ist) können Sie den PostgreSQL Datentyp bytea und die Funktion pg_escape_bytea() benutzen.

Hinweis:

Diese Funktion ersetzt die Funktion pg_locreate().

Parameter-Liste

connection

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

object_id

Wenn es einen Parameter object_id gibt, wird diese Funktion versuchen, ein Large Object mit dieser ID zu erzeugen. Anderenfalls wird dem Large Object vom Server eine freie ID zugewiesen. Dieser Parameter steht seit PHP 5.3 zur Verfügung und basiert auf Funktionalitäten, die seit PostgreSQL 8.1 implementiert sind.

Rückgabewerte

Ein Large Object OID oder FALSE, falls ein Fehler auftrat.

Changelog

Version Beschreibung
5.3.0

Der optionale Parameter object_id wurde zugefügt.

Beispiele

Beispiel #1 pg_lo_create() 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 fuer das Large Object");
   
pg_lo_close($handle);
   
pg_query($database"commit");
?>

add a note add a note

User Contributed Notes 1 note

up
0
andrea dot galli at acotel dot com
10 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