(PHP 8 >= 8.4.0)
Pdo\Pgsql::lobOpen — 既存のラージオブジェクトのストリームをオープンする
Pdo\Pgsql::lobOpen() は、oid
が指すデータにアクセスするためのストリームをオープンします。
fread()、fwrite() および
fgets() などの通常のファイルシステム関数を使用して、
ストリームの内容を操作することができます。
注意: この関数を含むラージオブジェクトへの全ての操作は トランザクション内で行わなければなりません。
oid
mode
r
の場合、読み込み用のストリームをオープンします。
モードが w
の場合、書き込み用のストリームをオープンします。
成功した場合にストリームリソース、失敗した場合に false
を返します。
例1 Pdo\Pgsql::lobOpen() の例
Pdo\Pgsql::lobCreate() の例に続き、 このコードはデータベースからラージオブジェクトを取得し ブラウザに出力します。
<?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(array($some_id));
$stmt->bindColumn('oid', $oid, PDO::PARAM_STR);
$stmt->fetch(PDO::FETCH_BOUND);
$stream = $db->pgsqlLOBOpen($oid, 'r');
header("Content-type: application/octet-stream");
fpassthru($stream);
?>