pg_lo_open

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

pg_lo_openラージオブジェクトをオープンする

説明

pg_lo_open(resource $connection, int $oid, string $mode): resource

pg_lo_open() はデータベース内にラージオブジェクトを オープンし、それを操作するためのラージオブジェクトリソースを返します。

警告

ラージオブジェクトのリソースを閉じる前にデータベースへの接続を 閉じないでください。

ラージオブジェクトインターフェイスは、トランザクションブロックの中で 使用する必要があります。

注意:

この関数は、以前は pg_loopen() と呼ばれていました。

パラメータ

connection

PostgreSQL データベース接続リソース。connection が指定されていない場合はデフォルトの接続が使用されます。 デフォルトの接続は、直近の pg_connect() あるいは pg_pconnect() によって作成されたものです。

oid

データベース内のラージオブジェクトの OID

mode

読み込み専用の "r"、書き込み専用の "w"、読み書き可能な "rw" のいずれか。

返り値

ラージオブジェクトのリソースを返します。エラー時には false を返します。

例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");
?>

参考

add a note add a note

User Contributed Notes 1 note

up
1
metator at netcabo dot pt
18 years ago
Just for the record, a user must be a superuser (database owner) in order to invoke pg_lo_open() (though pg_lo_create() may be invoked...). This opens a gigantic security hole in the db. If a user is not a superuser, db will raise an error with message "Can't create Large Object.".
Thus, imho, one should use pg_escape_bytea() instead.
To Top