(PHP 8 >= 8.4.0)
Pdo\Pgsql::lobOpen — Ouvre un flux sur un objet large existant
Pdo\Pgsql::lobOpen() ouvre un flux pour accéder
aux données référencées par oid.
Toutes les fonctions de système de fichiers habituelles, telles que fread(),
fwrite() ou fgets() peuvent être utilisées
pour manipuler le contenu du flux.
Note: Cette fonction, et toutes les manipulations de l'objet large, doivent être appelées et effectuées dans une transaction.
oidmodemode contient
w ou +, le flux est ouvert en
lecture et en écriture ; sinon, il est ouvert en lecture seule. Un
indicateur b (binaire) n'a aucun effet. La valeur par
défaut "rb" ouvre le flux en lecture.
Renvoie une ressource de flux en cas de succès, ou false si une erreur survient
Exemple #1 Exemple de Pdo\Pgsql::lobOpen()
D'après l'exemple de Pdo\Pgsql::lobCreate(), ce code extrait l'objet large de la base de données et le renvoie au navigateur.
<?php
$db = new Pdo\Pgsql('pgsql:dbname=test host=localhost', $user, $pass);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db->beginTransaction();
$stmt = $db->prepare("SELECT oid FROM BLOBS WHERE ident = ?");
$stmt->execute([$some_id]);
$stmt->bindColumn('oid', $oid, PDO::PARAM_STR);
$stmt->fetch(PDO::FETCH_BOUND);
$stream = $db->lobOpen($oid, 'r');
header("Content-type: application/octet-stream");
fpassthru($stream);
?>