PHP Conference Nagoya 2025

pg_lo_open

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

pg_lo_open Ouvre un objet de grande taille PostgreSQL

Description

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

pg_lo_open() ouvre un objet large dans la base de donnée et retourne une instance de PgSql\Lob pour qu'il puisse être manipulé.

Avertissement

Ne fermer pas la connexion à la base de données avant de fermer l'instance PgSql\Lob.

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

Une instance PgSql\Connection. Quand connection est pas spécifié, la connexion par défaut est utilisé. La connexion par défaut est la dernière connexion faite par pg_connect() ou pg_pconnect()

Avertissement

À partir de PHP 8.1.0, utiliser la connexion par défaut est obsolète.

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 instance PgSql\Lob, ou false si une erreur survient.

Historique

Version Description
8.1.0 Retourne désormais une instance de PgSql\Lob ; auparavant, une ressource était retourné.
8.1.0 Le paramètre connection attend désormais une instance de PgSql\Connection ; auparavant, une ressource était attendu.

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

User Contributed Notes 1 note

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