(PHP 8 >= 8.4.0)
Pdo\Pgsql::lobOpen — 打开现有的大型对象流
Pdo\Pgsql::lobOpen() 打开一个流来访问 oid
引用的数据。所有常用的文件系统函数,例如 fread()、fwrite() 或 fgets() 都可以用来操作流的内容。
注意: 此函数以及大型对象的所有操作都必须在事务中调用和执行。
oid
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);
?>