2024 日本 PHP 研討會

pg_lo_open

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

pg_lo_open開啟大型物件

說明

pg_lo_open(PgSql\Connection $connection, int $oid, string $mode): PgSql\Lob|false

pg_lo_open() 會開啟資料庫中的大型物件,並返回一個 PgSql\Lob 實例,以便進行操作。

警告

在關閉 PgSql\Lob 實例之前,請勿關閉資料庫連線。

要使用大型物件介面,必須將其包含在一個事務區塊內。

注意:

此函數以前稱為 pg_loopen()

參數

connection

一個 PgSql\Connection 實例。當未指定 connection 時,會使用預設連線。預設連線是 pg_connect()pg_pconnect() 建立的最後一個連線。

警告

自 PHP 8.1.0 起,不建議使用預設連線。

oid

資料庫中大型物件的 OID

mode

可以是 "r" 表示唯讀,"w" 表示唯寫,或 "rw" 表示讀寫。

傳回值

一個 PgSql\Lob 實例,失敗時則返回 false

更新日誌

版本 說明
8.1.0 現在返回一個 PgSql\Lob 實例;先前返回的是 資源
8.1.0 connection 參數現在需要一個 PgSql\Connection 實例;先前需要的是 資源

範例

範例 #1 pg_lo_open() 範例

<?php
$database
= pg_connect("dbname=jacarta");
pg_query($database, "begin");
$oid = pg_lo_create($database);
echo
"$oid\n";
$handle = pg_lo_open($database, $oid, "w");
echo
"$handle\n";
pg_lo_write($handle, "large object data");
pg_lo_close($handle);
pg_query($database, "commit");
?>

另請參閱

新增註釋

使用者貢獻的註釋 1 則註釋

metator at netcabo dot pt
19 年前
僅供參考,使用者必須是超級使用者(資料庫擁有者)才能呼叫 pg_lo_open()(儘管可以呼叫 pg_lo_create()...)。這在資料庫中開啟了一個巨大的安全漏洞。如果使用者不是超級使用者,資料庫將會引發錯誤訊息「無法建立大型物件」。
因此,依我之見,應該使用 pg_escape_bytea() 來代替。
To Top