pg_lo_create

(PHP 4 >= 4.2.0, PHP 5)

pg_lo_createСоздает большой объект

Описание

int pg_lo_create ([ resource $connection [, mixed $object_id ]] )
int pg_lo_create ( mixed $object_id )

pg_lo_create() создает большой объект и возвращает его OID. Режимы доступа PostgreSQL INV_READ, INV_WRITE, и INV_ARCHIVE не поддерживаются, объект всегда создается с доступом на чтение и запись. Режим INV_ARCHIVE убран из PostgreSQL версий 6.3 и выше.

Операции с использованием интерфейса больших объектов необходимо заключать в блок транзакции.

Вместо использования интерфейса больших объектов (который не имеет контроля доступа и весьма громоздкий сам по себе) пользуйтесь полями PostgreSQL типа bytea для хранения двоичных данных и функцией pg_escape_bytea() для их экранирования.

Замечание:

Прежнее название функции: pg_locreate().

Список параметров

connection

Ресурс подключения к базе данных PostgreSQL. Если параметр connection не задан, будет использовано подключение по умолчанию - последнее соединение, открытое функцией pg_connect() или pg_pconnect().

object_id

Если задан аргумент object_id, функция попытается создать объект с этим идентификатором, в противном случае будет использован свободный идентификатор, назначенный сервером. Этот аргумент появился в PHP 5.3 и основан на функционале, впервые реализованном в PostgreSQL 8.1.

Возвращаемые значения

OID большого объекта, либо FALSE в случае ошибки.

Список изменений

Версия Описание
5.3.0

Добавлен необязательный параметр object_id.

Примеры

Пример #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");
?>

Коментарии

<?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($fpfilesize('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($rs0);

   
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();
?>
2003-05-05 13:21:04
http://php5.kiev.ua/manual/ru/function.pg-lo-create.html

    Поддержать сайт на родительском проекте КГБ