(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);
?>