PHP Conference Japan 2024

Pdo\Pgsql::lobOpen

(PHP 8 >= 8.4.0)

Pdo\Pgsql::lobOpen打开现有的大型对象流

描述

public Pdo\Pgsql::lobOpen(string $oid, string $mode = "rb"): resource|false

Pdo\Pgsql::lobOpen() 打开一个流来访问 oid 引用的数据。所有常用的文件系统函数,例如 fread()fwrite()fgets() 都可以用来操作流的内容。

注意: 此函数以及大型对象的所有操作都必须在事务中调用和执行。

参数

oid
大型对象标识符。
mode
如果 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);
?>

参见

添加注释

用户贡献的注释

此页面没有用户贡献的注释。
To Top