Pdo\Pgsql::lobOpen
Opens an existing large object stream
説明
public resourcefalse Pdo\Pgsql::lobOpen(string $oid
, string $mode
= "rb")
Pdo\Pgsql::lobOpen opens a stream to access
the data referenced by oid
.
All usual filesystem functions, such as fread,
fwrite or fgets can be used
to manipulate the contents of the stream.
注意:
This function, and all manipulations of the large object,
must be called and carried out within a transaction.
パラメータ
-
oid
-
A large object identifier.
-
mode
-
If mode is
r
, open the stream for reading.
If mode is w
, open the stream for writing.
戻り値
Returns a stream resource on success,失敗した場合に false
を返します.
例
例1 Pdo\Pgsql::lobOpen example
Following on from the Pdo\Pgsql::lobCreate
example, this code snippet retrieves the large object from
the database and outputs it to the browser.
<?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