僅供參考,使用者必須是超級使用者(資料庫擁有者)才能呼叫 pg_lo_open()(儘管可以呼叫 pg_lo_create()...)。這在資料庫中開啟了一個巨大的安全漏洞。如果使用者不是超級使用者,資料庫將會引發錯誤訊息「無法建立大型物件」。
因此,依我之見,應該使用 pg_escape_bytea() 來代替。
(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)
pg_lo_open — 開啟大型物件
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" 表示讀寫。
版本 | 說明 |
---|---|
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");
?>
僅供參考,使用者必須是超級使用者(資料庫擁有者)才能呼叫 pg_lo_open()(儘管可以呼叫 pg_lo_create()...)。這在資料庫中開啟了一個巨大的安全漏洞。如果使用者不是超級使用者,資料庫將會引發錯誤訊息「無法建立大型物件」。
因此,依我之見,應該使用 pg_escape_bytea() 來代替。