(PHP 8 >= 8.4.0)
Pdo\Pgsql::lobOpen — 開啟現有的大型物件串流
Pdo\Pgsql::lobOpen() 開啟一個串流,以存取 oid
所參考的資料。所有常用的檔案系統函式,例如 fread()、fwrite() 或 fgets(),都可以用來操作串流的內容。
注意: 此函式,以及所有對大型物件的操作,都必須在交易內呼叫和執行。
oid
mode
r
,則開啟串流以供讀取。如果 mode 是 w
,則開啟串流以供寫入。
成功時傳回串流資源,失敗時傳回 false
。
此函式何時會發出 E_*
級別的錯誤,和/或拋出 Exception。
範例 #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);
?>