ConFoo: Call for paper is now Open

pg_lo_open

(PHP 4 >= 4.2.0, PHP 5)

pg_lo_open Ouvre un objet de grande taille PostgreSQL

Description

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

pg_lo_open() ouvre un objet de type Inversion Large Object et retourne un pointeur de fichier pour cet objet permettant ainsi d'être manipulé.

Avertissement

Ne fermer pas la connexion à la base de données avant de fermer la ressource de l'objet de grande taille.

Pour utiliser un objet de grande taille (lo), il est nécessaire de le faire dans une transaction.

Note:

Auparavant, cette fonction s'appelait pg_loopen().

Liste de paramètres

connection

La ressource de connexion de la base de données PostgreSQL. Lorsque connection n'est pas présent, la connexion par défaut est utilisée. La connexion par défaut est la dernière connexion faite par pg_connect() ou pg_pconnect().

oid

Le OID de l'objet de grande taille dans la base de données.

mode

Peut être "r" pour lecture seule, "w" pour écriture seule ou "rw" pour lecture et écriture.

Valeurs de retour

Une ressource d'objet de grande taille ou FALSE en cas d'erreur.

Exemples

Exemple #1 Exemple avec 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"données objet de grande taille");
   
pg_lo_close($handle);
   
pg_query($database"commit");
?>

Voir aussi

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