Pdo\Pgsql::lobOpen
既存のラージオブジェクトのストリームをオープンする
説明
public resourcefalse Pdo\Pgsql::lobOpen(string $oid, string $mode = "rb")
Pdo\Pgsql::lobOpen は、oid
が指すデータにアクセスするためのストリームをオープンします。
fread、fwrite および
fgets などの通常のファイルシステム関数を使用して、
ストリームの内容を操作することができます。
注意:
この関数を含むラージオブジェクトへの全ての操作は
トランザクション内で行わなければなりません。
パラメータ
-
oid
-
ラージオブジェクトの ID。
-
mode
-
アクセスモード。
mode に w または
+ が含まれる場合は、読み込みと書き込み用にストリームを
オープンします。そうでない場合は、読み込み専用でオープンします。
b(バイナリ)フラグは効果がありません。デフォルトの
"rb" は、読み込み用にストリームをオープンします。
戻り値
成功した場合にストリームリソース、失敗した場合に 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([$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);
?>
参考
- Pdo\Pgsql::lobCreate
- Pdo\Pgsql::lobUnlink
- pg_lo_create
- pg_lo_open