PHP Conference Japan 2024

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 实例;以前返回的是一个 resource
8.1.0 connection 参数现在需要一个 PgSql\Connection 实例;以前需要的是一个 resource

示例

示例 #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