既存のラージオブジェクトのストリームをオープンする

# Pdo\Pgsql::lobOpen

(PHP 8 >= 8.4.0)

Pdo\Pgsql::lobOpen — 既存のラージオブジェクトのストリームをオープンする

### 説明

public function Pdo\Pgsql::lobOpen(string `$oid`, string `$mode` = "rb"): resource|false

Pdo\Pgsql::lobOpen() は、`oid` が指すデータにアクセスするためのストリームをオープンします。 fread()、fwrite() および fgets() などの通常のファイルシステム関数を使用して、 ストリームの内容を操作することができます。

> 注意: この関数を含むラージオブジェクトへの全ての操作は トランザクション内で行わなければなりません。

### パラメータ

`oid`
  ラージオブジェクトの ID。
`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);
    ?>

### 参考

- Pdo\Pgsql::lobCreate() - 新しいラージオブジェクトを作成する
- Pdo\Pgsql::lobUnlink() - ラージオブジェクトを削除する
- pg_lo_create() - ラージオブジェクトを生成する
- pg_lo_open() - ラージオブジェクトをオープンする

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open