[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 メーリングリストの案内