ROBOWEB : Документация по PHP : html, perl, cgi, php, css, 3dmax - 3D Studio русская документация с примерами программ, RTFM и описание протоколов, описание dreamweaver, все для вебдизайнера
Разработка сайтов, web дизайн - Центр Русского Дизайна HOD.RU
FLASH
3D Studio MAX
DreamWeawer FAQ
Изучение HTML
META тэги
CSS
Руководство по стилям
Спецификация WML (WAP)
Язык DHTML
Спецификация XML
Руководство по Java
Документация по JavaScript
Язык HOD Text Processor
Интерфейс CGI
Документация по Perl 5
Perl FAQ
Документация по PHP
PHP/FI 2.0
Документация по SQL
Базы данных
Доступ к БД

Рейтинг@Mail.ru Rambler's Top100

Веб дизайнеру
Каталог сайтов Axes.ru


 Руководство по РНР 3.0 - Функции PostgreSQL

Содержание
pg_Close
pg_cmdTuples
pg_Connect
pg_DBname
pg_ErrorMessage
pg_Exec
pg_Fetch_Array
pg_Fetch_Object
pg_Fetch_Row
pg_FieldIsNull
pg_FieldName
pg_FieldNum
pg_FieldPrtLen
pg_FieldSize
pg_FieldType
pg_FreeResult
pg_GetLastOid
pg_Host
pg_loclose
pg_locreate
pg_loopen
pg_loread
pg_loreadall
pg_lounlink
pg_lowrite
pg_NumFields
pg_NumRows
pg_Options
pg_pConnect
pg_Port
pg_Result
pg_tty

Pestgres, изначально разработанный в компьютерном научном отделе университета Беркли, открыл многие объектно-ориентированные концепции, ставшие теперь доступными коммерческих базах данных. Pestgres обеспечивает поддержку языка SQL92/SQL3, целостность транзакций, и расширение типов. PostgreSQL является общедоступной СУБД с открытым кодом.

PostgreSQL доступен бесплатно. Посленяя версия доступна на www.postgreSQL.org.

С версии 6.3 (от 2 марта 1998 года) PostgreSQL использует сокеты домена UNIX. Этот сокет может быть найден в каталоге /tmp/.s.PGSQL.5432. Это свойство может быть включено с помощью флага '-i' в postmaster и это означает "прослушивание сокетов TCP/IP", аналогично сокетам домена UNIX.

Таблица 1. Postmaster and PHP

PostmasterPHPСтатус
postmaster &pg_connect("", "", "", "", "dbname");OK
postmaster -i &pg_connect("", "", "", "", "dbname");OK
postmaster &pg_connect("localhost", "", "", "", "dbname");Невозможно соедениться с сервером PostgreSQL: сбой connectDB(): Запущен ли postmaster и разрешено ли соединение TCP/IP (с флагом -i) на 'localhost' порт '5432'? в /path/to/file.php3 с строке 20.
postmaster -i &pg_connect("localhost", "", "", "", "dbname");OK

Можно также установить соединение с помощью команды: $conn = pg_Connect("host=localhost port=5432 dbname=chris");

Для использования интерфейса больших объектов (large objects) необходимо заключить их в блок транзакции. Блок транзакции начинается begin и, если транзакция прошла успешно, завершается commit и end. Если транзакция дала сбой, то транзакция должна быть закрыта с помощью abort и rollback.

Пример 1. Использование больших объектов

<?php
$database = pg_Connect ("", "", "", "", "jacarta");
pg_exec ($database, "begin");
    $oid = pg_locreate ($database);
    echo ("$oid\n");
    $handle = pg_loopen ($database, $oid, "w");
    echo ("$handle\n");
    pg_lowrite ($handle, "gaga");
    pg_loclose ($handle);
pg_exec ($database, "commit")
pg_exec ($database, "end")
?>


pg_Closepg_Close -- закрывает соединение PostgreSQL
Описание
bool pg_close(int connection);

Возвращает false, если connection - не правильный номер соединения. Закрывает соединение с базой PostgreSQL, связанное с указанным номером соединения.


pg_cmdTuplespg_cmdTuples -- возвращает число вызванных tuples
Описание
int pg_cmdtuples(int result_id);

pg_cmdTuples() возвращает число tuples (требований), вызванных запросами INSERT, UPDATE, и DELETE. Если нет вызванных tuple, то функция вернет 0.

Пример 1. pg_cmdtuples

<?php
$result = pg_exec($conn, "INSERT INTO verlag VALUES ('Autor')");
$cmdtuples = pg_cmdtuples($result);
echo $cmdtuples . " <- cmdtuples affected.";
?>


pg_Connectpg_Connect -- открывает соединение
Описание
int pg_connect(string host, string port, string options, string tty, string dbname);

Возвращает номер соединения при успехе или false, если соединение не может быть установлено. Открывает соединение с базой PostgreSQL. Каждый из аргументов должен быть в кавычках, включая номер порта. Аргементы options и tty являются дополнительными и могут быть опущены. Эта функция возвращает номер соединения, который необходим другим функциям PostgreSQL. Вы можете иметь одновременно несколько открытых соединений.

Соединение может быть также установлено следующей командой: $conn = pg_connect("dbname=marliese port=5432"); Дополнительные параметры (кроме dbname и port) - это host, tty и options.

См. также pg_pConnect().


pg_DBnamepg_DBname -- имя базы данных
Описание
string pg_dbname(int connection);

Возвращает имя базы данных, с которой соединен указанный номер соединения PostgreSQL, или возвращает false, если указан не правильный номер соединения.


pg_ErrorMessagepg_ErrorMessage -- сообщение об ошибке
Описание
string pg_errormessage(int connection);

Возвращает строку, содержащую сообщение об ошибке, или false при сбое. Детали об ошибке, вероятно, не могут быть получены с помощью pg_errormessage(), если ошибка произошла при последнем обращении к базе данных, для которой существует верный номер соединения, то функция вернет строку, содержащую сообщение об ошибке, выданное сервером.


pg_Execpg_Exec -- запускает запрос
Описание
int pg_exec(int connection, string query);

Возвращает признак результата, если запрос может быть запущен, false при ошибке или при неверном номере соединения. Детали об ошибке могут получены с помощью функции pg_ErrorMessage() , если номер соединения верный. Функция посылает SQL запрос базе данных PostgreSQL, определяемой номером соединения. Connection должен быть верным номером соединения, который возвращается функцией pg_Connect(). Возвращаемое этой функцией значение является необходимым для доступа к результатам других функций PostgreSQL.

Замечание: PHP2 возвращает 1, если запрос не должен возвращать данных (например, при вставке или обновлении) и больше 1, даже при выборках, которые ничего не возвращают. Таких допущений нет в PHP3.


pg_Fetch_Arraypg_Fetch_Array -- возвращает запись как массив
Описание
array pg_fetch_array(int result, int row);

Возвращает массив, который ссылается на полученную запись, или false если больше нет записей.

pg_fetch_array() является расширенной версией pg_fetch_row(). В дополнение к хранению данных под числовыми индексами в результирующем массиве, функция также хранит данные под ассоциативными индексами, используя номера полей в качестве ключей.

Необходимо отметить, что функция pg_fetch_array() практически одинакова по скорости с pg_fetch_row(), хотя и предоставляет дополнительные возможности.

Для дополнительной информации см. pg_fetch_row()

Пример 1. Массив записи PostgreSQL

<?php
$conn = pg_pconnect("","","","","publisher");
if (!$conn) {
    echo "An error occured.\n";
    exit;
}

$result = pg_Exec ($conn, "SELECT * FROM authors");
if (!$result) {
    echo "An error occured.\n";
    exit;
}

$arr = pg_fetch_array ($result, 0);
echo $arr[0] . " <- array\n";

$arr = pg_fetch_array ($result, 1);
echo $arr["author"] . " <- array\n";
?>

pg_Fetch_Objectpg_Fetch_Object -- возвращает запись как объект
Описание
object pg_fetch_object(int result, int row);

Возвращает объект со свойствами, которые ссылаются на полученную запись, или false если нет больше записей.

pg_fetch_object() совпадает с pg_fetch_array(), кроме того, что возвращается объект вместо массива. Это означает, что вы можете обратиться к данным только по имени поля, и а не по номеру или неправильному имени свойства.

По скорости функция идентична функции pg_fetch_array(), и почти такая же быстрая как pg_fetch_row() (разница незначительная).

См. также: pg_fetch_array() and pg_fetch_row().

Пример 1. Полученние объекта Postgres

<?php
$database = "verlag";
$db_conn = pg_connect ("localhost", "5432", "", "", $database);
if (!$db_conn): ?>
    <H1>Ошибка соединения с базой <? echo $database ?></H1> <?
    exit;
endif;

$qu = pg_exec ($db_conn, "SELECT * FROM verlag ORDER BY autor");
$row = 0; // postgres необходим счетчик записей, в отличие от других СУБД

while ($data = pg_fetch_object ($qu, $row)):
    echo $data->autor." (";
    echo $data->jahr ."): ";
    echo $data->titel."<BR>";
    $row++;
endwhile; ?>

<PRE><?
$fields[] = Array ("autor", "Author");
$fields[] = Array ("jahr",  "  Year");
$fields[] = Array ("titel", " Title");

$row= 0; // postgres необходим счетчик записей, в отличие от других
while ($data = pg_fetch_object ($qu, $row)):
    echo "----------\n";
    reset ($fields);
    while (list (,$item) = each ($fields)):
        echo $item[1].": ".$data->$item[0]."\n";
    endwhile;
    $row++;
endwhile;
echo "----------\n"; ?>
</PRE>


pg_Fetch_Rowpg_Fetch_Row -- получает запись как нумерованный массив
Описание
array pg_fetch_row(int result, int row);

Возвращает массив, который ссылается на полученную запись, или false, если больше нет записей.

pg_fetch_row() возвращает одну запись данных из результата, определяемого указанным идентификатором результата. Запись возвращается как массив. Каждый столбец результата храниться в элементе массива, начиная с 0.

Последующий вызов функции pg_fetch_row() возвратит следующую запись в результирующем наборе, или false, если записей больше нет.

См. также: pg_fetch_array(), pg_fetch_object(), pg_result().

Пример 1. Полученние записи Postgres

<?php
$conn = pg_pconnect("","","","","publisher");
if (!$conn) {
    echo "An error occured.\n";
    exit;
}

$result = pg_Exec ($conn, "SELECT * FROM authors");
if (!$result) {
    echo "Произошла ошибка.\n";
    exit;
}

$row = pg_fetch_row ($result, 0);
echo $row[0] . " <- row\n";

$row = pg_fetch_row ($result, 1);
echo $row[0] . " <- row\n";

$row = pg_fetch_row ($result, 2);
echo $row[1] . " <- row\n";
?>


pg_FieldIsNullpg_FieldIsNull -- Проверяет поле на нулевое значение
Описание
int pg_fieldisnull(int result_id, int row, mixed field);

Проверяет нулевое (NULL) значение у поля или нет. Возвращает 0, если поле в указанной записи не нулевое. Возвращает 1, если поле ы указанное записи нулевое. Поле может определяться номером или именем. Нумерация записей начинается с 0.


pg_FieldNamepg_FieldName -- возвращает имя поля
Описание
string pg_fieldname(int result_id, int field_number);

pg_FieldName() возвращет имя поля, соответствующее указанному номеру столбца в указанном идентификаторе результата PostgreSQL. Нумерация полей начинается с 0.


pg_FieldNumpg_FieldNum -- возвращает номер столбца
Описание
int pg_fieldnum(int result_id, string field_name);

pg_FieldNum() возвращает номер столбца, соответствующий указанному имени поля в указанном идентификаторе результата PosgreSQL. Нумерация полей начинается с 0. Функция вернет -1 при ошибке.


pg_FieldPrtLenpg_FieldPrtLen -- Возвращает печатную длину
Описание
int pg_fieldprtlen(int result_id, int row_number, string field_name);

pg_FieldPrtLen() возвращает действительную печатную длину (число символов) указанных данных в результате PosgreSQL. Нумерация записей начинается с 0. При ошибке функция вернет -1.


pg_FieldSizepg_FieldSize -- возвращает внутренний размер хранения именованного поля
Описание
int pg_fieldsize(int result_id, string field_name);

pg_FieldSize() возвращает внутренний размер хранения указанного именованного поля в указанном результате PosgreSQL. Размер поля -1 говорит о переменной длине поля. Эта функция вернет false при ошибке.


pg_FieldTypepg_FieldType -- возвращает тип соответствующего именованного поля
Описание
int pg_fieldtype(int result_id, int field_number);

pg_FieldType() возвращает строку, содержащую имя типа указанного поля в указанном идентификаторе результата PosgreSQL. Нумерация полей начинается с 0.


pg_FreeResultpg_FreeResult -- освобождает память
Описание
int pg_freeresult(int result_id);

pg_FreeResult() необходимо использовать только если вы беспокоитесь об использовании слишком большего объема памяти при работе вашего скрипта. Вся память резульата будет автоматически освобождена при завершении работы скрипта. Но, если вы уверены, что вам больше не потребуется память результата в скрипте, то вы можете вызвать pg_FreeResult(), с идентификатором результата в качестве параметра, и соответствующая память результата будет освобождена.


pg_GetLastOidpg_GetLastOid -- возвращает идентификатор последнего объекта
Описание
int pg_getlastoid(int result_id);

pg_GetLastOid() может быть использована для получения идентификатора, присвоенного запросу на вставку, если идентификатор результата использовался последней командой pg_Exec() и это была команда SQL INSERT. Эта функция вернет положительное целое число, если это был верный идентификатор. Функция вернет -1, если произошла ошибка или последня команда pg_Exec() не была INSERT.


pg_Hostpg_Host -- возвращает имя узла
Описание
string pg_host(int connection_id);

pg_Host() возвращает имя узла, с которым соединен указанный идентификатор соединения PostgreSQL.


pg_loclosepg_loclose -- закрывает большой объект
Описание
void pg_loclose(int fd);

pg_loclose() закрывает отображение большого объекта (ILO). fd является дескриптором файла для большого объекта из pg_loopen().


pg_locreatepg_locreate -- создает большой объект
Описание
int pg_locreate(int conn);

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


pg_loopenpg_loopen -- открывает большой объект
Описание
int pg_loopen(int conn, int objoid, string mode);

pg_loopen() открывает отображение большого объекта (ILO) и возвращает дескриптор файла большого объекта. Дескриптор файла содержит информацию о соединении. Не закрывайте соединение до закрытия дескриптора файла большого объекта. objoid определяет верный идентификатор большого объекта и mode может быть одним из "r", "w", or "rw".


pg_loreadpg_loread -- считывает большой объект
Описание
string pg_loread(int fd, int len);

pg_loread() считывает len байтов из большого объекта и возвращает их в виде строки. fd определяет верный декскриптор файла большого объекта len определяет максимально возможный размер сегмента большого объекта.


pg_loreadallpg_loreadall -- считывает весь большой объект
Описание
void pg_loreadall(int fd);

pg_loreadall() считывает большой объект и отправляет его прямо в броузер, после всех необходимых заголовков. В основном применяется для отправки двоичных данных, таких как изображения и звуковые файлы.


pg_lounlinkpg_lounlink -- удаляет большой объект
Описание
void pg_lounlink(int conn, int lobjid);

pg_lounlink() удаляет большой объект с идентификатором большого объекта lobjid.


pg_lowritepg_lowrite -- записывает в большой объект
Описание
int pg_lowrite(int fd, string buf);

pg_lowrite() записывает данные в большой объект из переменной buf и возвращает число записанных данных или false при ошибке. fd является дескриптором файла большого объекта из функции pg_loopen().


pg_NumFieldspg_NumFields -- возвращает количество полей
Описание
int pg_numfields(int result_id);

pg_NumFields() возвращает количестов полей (столбцов) в результате PostgreSQL. Параметр является верным идентификатором результата, полученным функцией pg_Exec(). Эта функция вернет -1 при ошибке.


pg_NumRowspg_NumRows -- возвращает число записей
Описание
int pg_numrows(int result_id);

pg_NumRows() возвращает число записей в результате PostgreSQL. Параметр является верным идентификатором результата, полученным функцией pg_Exec(). Эта функция вернет -1 при ошибке.


pg_Optionspg_Options -- возвращает настройки
Описание
string pg_options(int connection_id);

pg_Options() возвращает строку, содержащую настройки, соответствующие указанному идентификатору соединения PostgreSQL.


pg_pConnectpg_pConnect -- устанавливает устойчивое соединение с базой данных
Описание
int pg_pconnect(string host, string port, string options, string tty, string dbname);

Возвращает номер соединения при успехе или false, если соединение не может быть установлено. Открывает устойчивое соединение с базой данных PostgreSQL. Каждый параметр должен быть строкой в кавычках, включая номер порта. Параметры options и tty являются дополнительными и могут быть опущены. Эта функция возвращает номер соединения, который необходим другим функциям PostgreSQL. Вы можете одновременно открыть несколько устойчивых соединений. См. также pg_Connect().

Соединение может также быть установлено следующей командой: $conn = pg_pconnect("dbname=marliese port=5432"); Остальные параметры, кроме dbname и port, - это host, tty и options.


pg_Portpg_Port -- возвращает номер порта
Описание
int pg_port(int connection_id);

pg_Port() возвращает номер порта, с которым соединен указанный идентификатор соединения PostgreSQL.


pg_Resultpg_Result -- возвращает данные из идентификатора результата
Описание
mixed pg_result(int result_id, int row_number, mixed fieldname);

pg_Result() возвращает данные из идентификатора результата, полученного pg_Exec(). Параметры row_number и fieldname определяют, из какой ячейки таблицы будут взяты данные. Нумерация записей и полей начинается с 0. Вместо имени поля вы можете использовать номер поля (без кавычек).

PostgreSQL имеет много видов данных, но здесь поддерживаются только основные. Все виды целых и логических типов, типов идентификаторов возвращаются как целые числа. Все виды типов с плавающей точкой и действительных чисел возвращаются как тип double. Все осталные типы, включая массивы возвращаются как строки, отформатированные в том же виде, какой вы видели в программе psql.


pg_ttypg_tty -- возвращает имя tty
Описание
string pg_tty(int connection_id);

pg_tty() возвращает имя tty, которое сервер дает указанному идентификатору соединения PostgreSQL.



Содержание