PHP 8.6.0 Beta 1 is available for testing

pg_lo_create

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

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

Описание

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

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

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

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

Замечание:

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

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

connection

Экземпляр класса PgSql\Connection . Функция выберет соединение по умолчанию, если параметр connection не указали. Соединение по умолчанию — последнее соединение, которое установила функция pg_connect() или pg_pconnect() .

Внимание

Начиная с PHP 8.1.0 выбор функцией соединения по умолчанию устарел.

object_id

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

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

OID большого объекта или false , если возникла ошибка.

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

Версия Описание
8.1.0 Параметр connection теперь принимает объект PgSql\Connection ; раньше параметр принимал тип resource .

Примеры

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

Нашли ошибку?

ИнструкцияИсправлениеСообщение об ошибке
+Добавить

Примечания пользователей 1 note

up
0
andrea dot galli at acotel dot com
23 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();
?>
+Добавить

AltStyle によって変換されたページ (->オリジナル) /