pg_lo_create

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

pg_lo_createラージオブジェクトを生成する

説明

pg_lo_create(PgSql\Connection $connection = ?, mixed $object_id = ?): int
pg_lo_create(mixed $object_id): int

pg_lo_create() はラージオブジェクトを 生成し、そのラージオブジェクトの OID を返します。 PostgreSQL アクセスモード INV_READINV_WRITE および INV_ARCHIVE はサポートされません。オブジェクトは 常に読み書き可のアクセス権で生成されます。 INV_ARCHIVE は PostgreSQL 自身からも削除されました (バージョン 6.3 以降)。

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

ラージオブジェクトインターフェイス(アクセス制御もできないし使用が面倒) を使用するかわりに、PostgreSQL の bytea カラム型と pg_escape_bytea() を試してください。

注意:

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

パラメータ

connection

PgSql\Connection クラスのインスタンス。 connection が指定されない場合は、デフォルトの接続を使います。 デフォルトの接続とは、pg_connect() または pg_pconnect() によって確立された直近の接続です。

警告

PHP 8.1.0 以降では、デフォルトの接続を使うことは推奨されなくなりました。

object_id

object_id が指定されると、 この関数は指定された ID のラージオブジェクトを作成しようとします。 それ以外の場合は、サーバーから割り当てられたオブジェクト ID を使用します。 このパラメータは PostgreSQL 8.1 以降の新機能に依存しています。

戻り値

ラージオブジェクトの OID を返します。 失敗した場合に false を返します

変更履歴

バージョン 説明
8.1.0 connection は、PgSql\Connection クラスのインスタンスを期待するようになりました。 これより前のバージョンでは、リソース を期待していました。

例1 pg_lo_create() の例

<?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

User Contributed Notes 1 note

up
1
andrea dot galli at acotel dot com
22 years ago
<?php// --------- OPEN CONN ---   $conn = pg_connect("host='127.0.0.1' dbname='test' user='usertest' password='passtest'");// --------- OPEN FILE ---   $fp = fopen('logo.gif', "r");   $buffer = fread($fp, filesize('logo.gif'));   fclose($fp);// --------- CREATE - INSERT OID ---   pg_exec($conn, "begin");   $oid = pg_locreate($conn);   $rs = pg_exec($conn,"INSERT INTO test(tipo, images) VALUES('A1', $oid);");   $handle = pg_loopen ($conn, $oid, "w");   pg_lowrite ($handle, $buffer);   pg_loclose ($handle);   pg_exec($conn, "commit");// --------- OPEN - INSERT OID ---   $rs = pg_exec($conn, "SELECT images FROM test WHERE tipo = 'A1';");   $row = pg_fetch_row($rs, 0);   pg_exec($conn, "begin");   $loid = pg_loopen($conn, $row[0], "r");   header("Content-type: image/gif");   pg_loreadall($loid);   pg_loclose($loid);   pg_exec ($conn, "commit");// --------- UNLINK OID ---   pg_exec($conn, "begin");   $loid = $row[0];   pg_lounlink($conn, $loid);   pg_exec ($conn, "commit");// --------- DELETE OID ---   pg_exec($conn, "DELETE FROM test WHERE tipo = 'A1';");// --------- CLOSE CONN ---   pg_close();?>
To Top