[PHP-doc 949] PDO::pgsqlLOBOpen() の例
Kenji Suzuki
kenji.uui @ gmail.com
2013年 1月 18日 (金) 11:12:38 JST
Kenji です。
http://php.net/manual/ja/pdo.pgsqllobopen.php の
例1 PDO::pgsqlLOBOpen() の例
が動作しませんでしたので、報告します。
PDO_PGSQL の場合、LOB は専用の API で取得する必要があるため、
以下のようにする必要があるのではないかと思います。
カラム oid はラージオブジェクトではなく OID そのものが保存されて
います。
header() はファイルが保存されるように追加しました。
<?php
$db = new PDO('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);
// Kenji
PHP-doc メーリングリストの案内