PHP-Nuke по-русски    Главная
Начальная
страница
 Клуб
Русский
клуб
 Разделы
Тематические
разделы
 Ссылки
Каталог
сайтов
 Файлы
Каталог
программ
 Школа
Практические
занятия
 Форум
Форумы
поддержки
Учебник РНР
Назад Вперёд

LXXX. Функции PostgreSQL

Postgres, разработанный в оригинале департаментом UC Berkeley Computer Science Department, был пионером многих объектно-ориентированных концепций, ставших теперь доступными в некоторых коммерческих БД. Он предоставляет поддержку языка SQL92/SQL99, целостности транзакций и расширяемости типов. PostgreSQL это открытый ресурс, потомок оригинального Berkeley-кода.

PostgreSQL это продукт, доступный бесплатно. Для использования поддержки PostgreSQL вам необходим PostgreSQL 6.5 или новее. PostgreSQL 7.0 или новее - для всех возможностей модуля PostgreSQL. PostgreSQL поддерживает многие кодировки символов, включая кодировку многобайтных символов. Текущая версия и информация о PostgreSQL находятся на http://www.postgresql.org/.

Чтобы включить поддержку PostgreSQL, необходима опция --with-pgsql[=DIR] при компиляции PHP. Если модуль совместно используемых/shared объектов доступен, PostgreSQL-модуль может быть загружен с использованием директивы extension в файле php.ini или функции dl(). Поддерживаемые ini-директивы описаны в файле php.ini-dist, поставляемом вместе с исходным кодом дистрибутива.

Предупреждение!

Использование модуля PostgreSQL с PHP 4.0.6 не рекомендуется из-за жучка в коде обработки уведомляющих сообщений. Используйте 4.1.0 или новее.

Предупреждение!

Имена PostgreSQL-функций будут изменены в релизе 4.2.0 для подтверждения соответствия существующим стандартам кодировки. Большая часть новых имён будет иметь дополнительные символы подчёркивания, например, pg_lo_open(). Некоторые функции переименовываются для обеспечения целостности. например, pg_exec() в pg_query(). Старые имена можно использовать в 4.2.0 и в некоторых релизах 4.2.0, но они могут быть удалены в будущем.

Таблица 1. Изменения имён функций
Старое имяНовое имя
pg_exec()pg_query()
pg_getlastoid()pg_last_oid()
pg_cmdtuples()pg_affected_rows()
pg_numrows()pg_num_rows()
pg_numfields()pg_num_fields()
pg_fieldname()pg_field_name()
pg_fieldsize()pg_field_size()
pg_fieldnum()pg_field_num()
pg_fieldprtlen()pg_field_prtlen()
pg_fieldisnull()pg_field_is_null()
pg_freeresult()pg_free_result()
pg_result()pg_fetch_result()
pg_loreadall()pg_lo_read_all()
pg_locreate()pg_lo_create()
pg_lounlink()pg_lo_unlink()
pg_loopen()pg_lo_open()
pg_loclose()pg_lo_close()
pg_loread()pg_lo_read()
pg_lowrite()pg_lo_write()
pg_loimport()pg_lo_import()
pg_loexport()pg_lo_export()

Старый синтаксис pg_connect()/ pg_pconnect() будет не рекомендован, с целью поддержки в будущем асинхронных соединений. Пожалуйста, используйте строку соединения для pg_connect() и pg_pconnect().

Не все функции поддерживаются во всех построениях/builds. Это зависит от версии вашей libpq (The PostgreSQL C Client interface) и от того, как libpq скомпилирована. Если имеется отсутствующая функция, libpq не поддерживает возможности, требуемые для этой функции.

Важно также, чтобы вы использовали libpq более новую, чем PostgreSQL Server, с которым соединяетесь. Если вы используете libpq более старую, чем ожидает PostgreSQL Server, у вас будут проблемы.

Начиная с версии 6.3 (03/02/1998), PostgreSQL использует по умолчанию сокет домена unix. TCP-порт НЕ открывается по умолчанию. В таблице описаны эти новые возможности соединений. Этот сокет можно найти в in /tmp/.s.PGSQL.5432. Данная опция может быть включена флагом '-i' для postmaster, и его значением будет : "прослушивать TCP/IP-сокеты, а также сокеты Unix-домена".

Таблица 2. Postmaster и PHP
PostmasterPHPСтатус
postmaster &pg_connect("dbname=MyDbName"); OK
postmaster -i &pg_connect("dbname=MyDbName"); OK
postmaster &pg_connect("host=localhost dbname=MyDbName"); Невозможно соединиться с PostgreSQL server: connectDB() терпит неудачу: Работает ли postmaster и принимает ли TCP/IP (with -i) соединение по 'localhost' и порту '5432'? в /path/to/file.php на строке 20.
postmaster -i & pg_connect("host=localhost dbname=MyDbName");OK

Соединение с PostgreSQL-сервером может быть установлено следующими парами значений в командной строке: $conn = pg_connect("host=myHost port=myPort tty=myTTY options=myOptions dbname=myDB user=myUser password=myPassword ");

Предыдущий синтаксис: $conn = pg_connect ("host", "port", "options", "tty", "dbname") теперь не рекомендуется.

Переменные окружения влияют на поведение PostgreSQL server/client. Например, PostgreSQL-модуль будет искать переменную окружения PGHOST, если hostname отсутствует в строке соединения. Поддерживаемые переменные окружения отличаются в разных версиях. См. детали в PostgreSQL Programmer's Manual (libpq - Environment Variables).

Убедитесь, что вы установили переменные окружения для соответствующего пользователя. Используйте $_ENV или getenv() для проверки того, какие переменные окружения доступны текущему процессу.

Пример 1. Установка параметров по умолчанию
PGHOST=pgsql.example.com
PGPORT=7890
PGDATABASE=web-system
PGUSER=web-user
PGPASSWORD=secret
PGDATESTYLE=ISO
PGTZ=JST
PGCLIENTENCODING=EUC-JP

export PGHOST PGPORT PGDATABASE PGUSER PGPASSWORD PGDATESTYLE PGTZ PGCLIENTENCODING

Начиная работу с PostgreSQL 7.1.0, вы можете сохранять 1GB в поле типа text. В более старых версиях могут быть ограничения на размер блоков (по умолчанию было 8KB, максимум был 32KB, определяемые на этапе компиляции).

Для использования интерфейса больших объектов/large object (lo) необходимо включать lo-функции внутри блока транзакции. Блок транзакции начинается с SQL-оператора BEGIN, и, если транзакция была верной, заканчивается COMMIT или END. Если транзакция терпит неудачу, она должна быть закрыта с помощью ROLLBACK или ABORT.
Пример 2. Использование больших объектов (Large Objects)
<?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");
?>

Вы не должны закрывать соединение с PostgreSQL-сервером до закрытия large-объекта.

Содержание
pg_affected_rows - возвращает количество задействованных записей (пар/tuples)
pg_cancel_query - отменяет async-запрос
pg_client_encoding - получает клиентскую кодировку
pg_close - закрывает PostgreSQL-соединение
pg_connect - открывает PostgreSQL-соединение
pg_connection_busy - получает, закрыто соединение или нет
pg_connection_reset - восстанавливает соединение (reconnect)
pg_connection_status - получает статус соединения
pg_convert - конвертирует значение ассоциативного массива в значение, подходящее для оператора SQL
pg_copy_from - вставляет записи в таблицу из массива
pg_copy_to - копирует таблицу в массив
pg_dbname - получает имя базы данных
pg_delete - удаляет записи
pg_end_copy - синхронизирует с PostgreSQL backend
pg_escape_bytea - мнемонизирует/еscape binary для типа bytea
pg_escape_string - мнемонизирует string для типа text/char
pg_fetch_array - извлекает ряд как массив
pg_fetch_object - извлекает ряд как объект
pg_fetch_result - возвращает значения из результирующего ресурса
pg_fetch_row - получает ряд как перечислимый массив
pg_field_is_null - проверяет, является ли поле NULL
pg_field_name - возвращает имя поля
pg_field_num - возвращает номер именованного поля
pg_field_prtlen - возвращает печатаемый размер
pg_field_size - возвращает внутренний размер хранения именованного поля
pg_field_type - возвращает имя типа для соответствующего номера поля
pg_free_result - освобождает результирующую память
pg_get_result - получает результат асинхронного запроса
pg_host - возвращает имя хоста, ассоциированного с соединением
pg_insert - вставляет массив в таблицу
pg_last_error - получает строку последнего сообщения об ошибке соединения
pg_last_notice - возвращает последнее уведомление от PostgreSQL-сервера
pg_last_oid - возвращает oid последнего объекта
pg_lo_close - закрывает large-объект
pg_lo_create - создаёт large-объект
pg_lo_export - экспортирует large-объект в файл
pg_lo_import - импортирует large-объект из файла
pg_lo_open - открывает large-объект
pg_lo_read_all - читает весь large-объект и отправляет его браузеру
pg_lo_read - читает large-объект
pg_lo_seek - ищет позицию large-объекта
pg_lo_tell - возвращает текущую позицию large-объекта
pg_lo_unlink - удаляет large-объект
pg_lo_write - записывает large-объект
pg_metadata - получает метаданные для таблицы
pg_num_fields - возвращает количество полей
pg_num_rows - возвращает количество рядов
pg_options - получает опции, ассоциированные с данным соединением
pg_pconnect - открывает постоянное PostgreSQL-соединение
pg_port - возвращает номер порта, ассоциированного с соединением
pg_put_line - отправляет NULL-законченную строку в PostgreSQL backend
pg_query - выполняет запрос
pg_result_error - получает сообщение об ошибке, ассоциированное с результатом
pg_result_status - получает статус результата выполнения запроса
pg_select - выбирает записи
pg_send_query - отправляет асинхронный запрос/query
pg_set_client_encoding - устанавливает клиентскую кодировку
pg_trace - включает трассировку PostgreSQL-соединения
pg_tty - возвращает tty-имя, ассоциированное с соединением
pg_untrace - отключает трассировку PostgreSQL-соединения
pg_update - обновляет таблицу

НазадОглавление Вперёд
posix_unameВверх pg_affected_rows

© RigaNet - Internet studio
For Web site issues, contact the Web master.

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