pg_lo_write

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

pg_lo_write写入大型对象

描述

pg_lo_write(PgSql\Lob $lob, string $data, ?int $length = null): int|false

pg_lo_write() 在当前查找位置将数据写入大型对象。

要使用大型对象接口,需要将其包含在事务块中。

注意:

此函数以前称为 pg_lowrite().

参数

lob

一个 PgSql\Lob 实例,由 pg_lo_open() 返回。

data

要写入大型对象的数据。如果 length 是一个 int 且小于 data 的长度,则只写入 length 个字节。

length

可选的最大写入字节数。必须大于零且不大于 data 的长度。默认为 data 的长度。

返回值

写入大型对象的字节数,或在错误时为 false

变更日志

版本 描述
8.1.0 lob 参数现在期望一个 PgSql\Lob 实例;以前,期望一个 资源
8.0.0 length 现在是可空类型。

示例

示例 #1 pg_lo_write() 示例

<?php
$doc_oid
= 189762345;
$data = "This will overwrite the start of the large object.";
$database = pg_connect("dbname=jacarta");
pg_query($database, "begin");
$handle = pg_lo_open($database, $doc_oid, "w");
$data = pg_lo_write($handle, $data);
pg_query($database, "commit");
?>

参见

添加笔记

用户贡献笔记 2 个笔记

cedric at isoca.com
23 年前
注意,当你使用 pg_lowrite() 修改 lo 时,首先删除旧的 lo:如果新的 lo 比以前的 lo 小,它只会覆盖开头,你会保留旧 lo 的结尾(使用 "w" 参数打开,PHP 4.04 Linux RH)。
nandrews at logictree dot co dot uk
21 年前
使用 php 4.3.0 和 PostgreSQL 7.3.1

我可以编写一个简单的脚本,其中 pg_lo_write 似乎总是返回 1,而不是写入的字节数,如通过其他方式提取数据所证明的那样。

此外,我可以使这个 pg_lo_write 失败,或者至少无法写入所有数据,很难在没有返回写入的字节数的情况下判断,并且不返回 false 值。除此之外,lo 资源已调整,因此它包含的 oid 为 0。

不幸的是,我不知道确切的故障模式是什么,它似乎在 PostgreSQL 的 ip 网络通信方面,这很奇怪,因为 unix 域通信对这一点来说很好。然而,如果 pg_lo_write() 函数能够按广告宣传的那样返回,那将是有用的,它将节省我和开发团队投入到诊断这个问题中的 2 个工时。
To Top