PHP 8.4.2 Released!

Pdo\Pgsql::lobCreate

(PHP 8 >= 8.4.0)

Pdo\Pgsql::lobCreateCréer un nouvel objet large

Description

public Pdo\Pgsql::lobCreate(): string|false

Pdo\Pgsql::lobCreate() crée un objet large et retourne l'OID qui le référence. Il peut être ouvert pour lire ou écrire des données avec Pdo\Pgsql::lobOpen().

L'OID peut être stocké dans des colonnes de type OID et être utilisé pour référencer l'objet large, sans que la ligne ne grossisse de manière arbitraire. L'objet large continuera d'exister dans la base de données jusqu'à ce qu'il soit supprimé en appelant Pdo\Pgsql::lobUnlink().

Les objets larges sont des objets volumineux à utiliser. En effet, il est nécessaire d'appeler Pdo\Pgsql::lobUnlink() avant de supprimer la dernière ligne référençant l'OID dans toute la base de données ; sinon, les objets larges non référencés resteront sur le serveur indéfiniment. De plus, les objets larges n'ont pas de contrôles d'accès. Une alternative est le type de colonne bytea, qui peut être jusqu'à 1 Go de taille, et ce type de colonne gère de manière transparente le stockage pour une taille de ligne optimale.

Note: Cette fonction, et toutes les manipulations de l'objet large, doivent être appelées et effectuées dans une transaction.

Liste de paramètres

Cette fonction ne contient aucun paramètre.

Valeurs de retour

Renvoie l'OID du nouvel objet large créé en cas de succès, ou false si une erreur survient.

Exemples

Exemple #1 Pdo\Pgsql::lobCreate() example

Cet exemple crée un nouvel objet large et copie le contenu d'un fichier dedans. L'OID est ensuite stocké dans une table.

<?php
$db
= new Pdo\Pgsql('pgsql:dbname=test host=localhost', $user, $pass);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db->beginTransaction();
$oid = $db->lobCreate();
$stream = $db->lobOpen($oid, 'w');
$local = fopen($filename, 'rb');
stream_copy_to_stream($local, $stream);
$local = null;
$stream = null;
$stmt = $db->prepare("INSERT INTO BLOBS (ident, oid) VALUES (?, ?)");
$stmt->execute([$some_id, $oid]);
$db->commit();
?>

Voir aussi

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top