C. PostgreSQL

PostgreSQL, stworzony początkowo na Wydziale Nauk Komputerowych Uniwersytetu Berkeley, był pionierem wielu koncepcji obiektowych obecnie dostępnych w komercyjnych bazach danych. Jest zgodny z ze standardami języka SQL92/SQL3, obsługuje transakcje i pozwala definiować własne typy danych. PostgreSQL jest wolno-dostępnym spadkobiercą oryginalnego kodu Berkeley.

PostgreSQL jest produktem Open Source i jest dostępny za darmo. Aby korzystać wsparcia dla PosgreSQL-a, będziesz potrzebował PostgreSQL w wersji 6.5 lub nowszej. Aby wykorzystać wszystkie możliwości modułu potrzebny jest PostgreSQL 7.0 lub nowszy. PostgreSQL wspiera wiele stron kodowych, z wielobajtowymi włącznie. Aktualna wersja i więcej informacji jest dostępne tu: http://www.postgresql.org/.

W celu uruchomienia wsparcia dla PostgreSQL-a, należy użyć opcji --with-pgsql[=DIR] w czasie kompilacji PHP. Jeśli jest dostępny współdzielony moduł, może on być załadowany przez wpisanie dyrektywy extension w pliku php.ini lub funkcji dl(). Wspierane dyrektywy ini są opisane w pliku php.ini-dist który jest zawarty w dystrybucji źródłowej.

Ostrzeżenie

Używanie modułu PostgreSQL z PHP 4.0.6 nie jest zalecane ze względu na błąd w obsłudze komunikatów. Zaleca się używanie wersji 4.1.0 lub nowszej.

Ostrzeżenie

Nazwy funkcji PostgreSQL będą zmienione w wersji 4.2.0 w celu dostosowania do obecnych standardów kodowania. Większość nowych nazw będzie miała dodatkowe podkreślenia np. pg_lo_open(). Niektóre funkcje będą miały zmienione nazwy, aby ujednolicić nazewnictwo np. pg_exec() na pg_query(). Stare nazwy będzie można używać w wersji 4.2.0 i w kilku kolejnych, mogą jednak być usunięte w przyszłości.

Tabela 1. Zmienione nazwy funkcji

Stara nazwaNowa nazwa
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()

Stara składnia pg_connect()/ pg_pconnect() będzie wycofywana aby zapewnić w przyszłości wsparcie dla asynchronicznych połączeń. Prosimy używać łańcucha połączeniowego dla pg_connect() i pg_pconnect().

Nie wszystkie funkcje są wspierane przez wszystkie wersje. Zależy to od twojej wersji libpq (Interfejs C klienta PostgreSQL) i sposobu jej kompilacji. Jeśli brakuje jakiejś funkcji, libpq nie będzie wspierać danej funkcjonalności.

Jest istotne żeby używać nowszej biblioteki libpq niż serwer PostgreSQL z którym się łączymy. Jeśli libpq jest starsze niż oczekiwane przez serwer PostgreSQL, możesz mieć problemy.

Od wersji 6.3 (03/02/1998) PostgreSQL używa gniazdek domen unixowych ("unix domain socket"). Port TCP NIE będzie domyślnie otwarty. Poniższa tabela pokazuje te nowe rodzaje połączeń. Plik gniazdka znajduje się w /tmp/.s.PGSQL.5432. Ta opcja może być odblokowana przez użycie flagi '-i' z poleceniem postmaster i oznacza: "nasłuchuj na gniazdkach TCP/IP oraz na gniazdkach domen unixowych".

Tabela 2. PostgreSQL Postmaster i PHP

PostmasterPHPStatus
postmaster &pg_connect("dbname=MyDbName");OK
postmaster -i &pg_connect("dbname=MyDbName");OK
postmaster &pg_connect("host=localhost dbname=MyDbName"); Unable to connect to PostgreSQL server: connectDB() failed: Is the postmaster running and accepting TCP/IP (with -i) connection at 'localhost' on port '5432'? in /path/to/file.php on line 20.
postmaster -i &pg_connect("host=localhost dbname=MyDbName");OK

Połączenie do serwera PostgreSQL może być nawiązane poprzez ustawienie następujących wartości w łańcuchu połączenia: $conn = pg_connect("host=myHost port=myPort tty=myTTY options=myOptions dbname=myDB user=myUser password=myPassword ");

Poprzednia składnia: $conn = pg_connect ("host", "port", "options", "tty", "dbname") jest wycofywana.

Zmienne środowiskowe wpływają na zachowanie klienta i serwera PostgreSQL. Przykładowo, moduł PostgreSQL będzie poszukiwał zmiennej PGHOST kiedy nazwa serwera będzie pominięta w łańcuchu połączeniowym. Używane zmienne środowiskowe zmieniają się wraz z wersjami. Szczegóły można znaleźć w PostgreSQL Programmer's Manual (libpq - Environment Variables).

Upewnij się że ustawiłeś zmienne środowiskowe dla właściwego użytkownika. Użyj $_ENV lub getenv() aby sprawdzić jakie zmienne środowiskowe są dostępne dla bieżącego procesu.

Przykład 1. Ustawianie domyślnych parametrów

PGHOST=psgql.exmaple.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

Poczynając od PostgreSQL 7.1.0, jedno pole typu text może pomieścić do 1GB. Wcześniejsze wersje limitowały wielkość pola do rozmiaru bloku (domyślnie 8KB, maksymalnie 32KB, definiowane przy kompilacji).

Użycie interfejsu wielkich obiektów (LO - Large Objects) wymaga zamknięcia go wewnątrz bloku transakcji. Transakcja rozpoczyna się poleceniem SQL BEGIN i - jeśli transakcja się powiedzie - kończy się poleceniem COMMIT lub END. Jeśli transakcja nie powiedzie się, powinna być zakończona poleceniem ROLLBACK lub ABORT.

Przykład 2. Używanie wielkich obiektów (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");
?>
Nie wolno zamykać połączenia do serwera PostgreSQL, przed zamknięciem wielkiego obiektu.

Spis treści
pg_affected_rows -- Zwraca liczbę zmodyfikowanych wierszy
pg_cancel_query --  Przerywa zapytanie asynchroniczne
pg_client_encoding --  Zwraca stronę kodową klienta
pg_close -- Zamyka połączenie z PostgreSQL
pg_connect -- Otwiera tymczasowe połączenie do PostgreSQL-a
pg_connection_busy --  Sprawdza czy połączenie jest zajęte czy wolne
pg_connection_reset --  Restartuje połączenie
pg_connection_status --  Zwraca stan połączenia
pg_convert --  Konwertuje tablicę asocjacyjną na postać użyteczną w zapytaniu SQL.
pg_copy_from --  Wstawia wiersze do tabeli z tablicy
pg_copy_to --  Kopiuje tabele do tablicy
pg_dbname -- Podaje nazwę bazy danych
pg_delete --  Usuwa wiersze
pg_end_copy -- Synchronizuje klienta z serwerem PostgreSQL.
pg_escape_bytea --  Konwertuje łańcuch wstawiając sekwencje Escape dla typu bytea
pg_escape_string --  Konwertuje łańcuch wstawiając sekwencje Escape dla typu text/char
pg_execute -- Sends a request to execute a prepared statement with given parameters, and waits for the result.
pg_fetch_all -- Fetches all rows from a result as an array
pg_fetch_array -- Pobiera wiersz jako tablicę
pg_fetch_assoc -- Fetch a row as an associative array
pg_fetch_object -- Pobiera wiersz jako obiekt
pg_fetch_result -- Pobiera dane z wyniku
pg_fetch_row -- Pobiera wiersz jako tablicę z indeksami numerycznymi
pg_field_is_null -- Sprawdza czy pole zawiera NULL
pg_field_name -- Zwraca nazwę kolumny
pg_field_num -- Zwraza numer kolumny o podanej nazwie
pg_field_prtlen -- Zwraca drukowalną długość
pg_field_size --  Zwraca wewnętrzny rozmiar kolumny
pg_field_type_oid --  Returns the type ID (OID) for the corresponding field number
pg_field_type --  Zwraca typ wskazanej kolumny
pg_free_result -- Zwalnia pamięć wyniku
pg_get_notify -- Ping database connection
pg_get_pid -- Ping database connection
pg_get_result --  Zwraca wynik zapytania asynchroniczego
pg_host --  Zwraca nazwę komputera związaną z identyfikatorem połączenia
pg_insert --  Wstawia tablicę do tabeli
pg_last_error -- Zwraca ostatni komunikat błędu związany z połączeniem
pg_last_notice --  Zwraca komunikaty informacyjne serwera PostgreSQL
pg_last_oid -- Zwraca identyfikator ostatniego obiektu
pg_lo_close -- Zamyka wielki obiekt (Large Object - LO)
pg_lo_create -- Tworzy wielki obiekt (Large Object - LO)
pg_lo_export -- Eksportuje wielki obiekt (Large Object - LO) do pliku
pg_lo_import -- Importuje wielki obiekt (Large Object - LO) z pliku
pg_lo_open -- Otwiera wielki obiekt (Large Object - LO)
pg_lo_read_all --  Odczytuje wielki obiekt (Large Object - LO) i wysła go do przeglądarki
pg_lo_read -- Odczytuje wielki obiekt (Large Object - LO)
pg_lo_seek --  Przemieszcza wskaźnik położenia w wielkim obiekcie (Large Object - LO)
pg_lo_tell --  Zwraca wskaźnik położenia w wielkim obiekcie (Large Object - LO)
pg_lo_unlink -- Usuwa wielki obiekt (Large Object - LO)
pg_lo_write -- Zapisuje do wielkiego obiektu (Large Object - LO)
pg_meta_data --  Get meta data for table
pg_num_fields -- Zwraca liczbę kolumn
pg_num_rows -- Zwraca liczbę wierszy
pg_options -- Podaje opcje powiązane z połączenim
pg_parameter_status -- Looks up a current parameter setting of the server.
pg_pconnect -- Otwiera stałe połączenie do serwera PostgreSQL
pg_ping -- Ping database connection
pg_port --  Zwraca numer portu związany z połączeniem
pg_prepare --  Submits a request to create a prepared statement with the given parameters, and waits for completion.
pg_put_line -- Wysyła łańcuch zakończony znakiem NULL do serwera PostgreSQL
pg_query_params -- Submits a command to the server and waits for the result, with the ability to pass parameters separately from the SQL command text.
pg_query -- Wykonuje zapytanie do bazy
pg_result_error_field -- Returns an individual field of an error report.
pg_result_error --  Zwraca błąd związany z identyfikatorem wyniku
pg_result_seek -- Set internal row offset in result resource
pg_result_status --  Zwraca stan wyniku
pg_select --  Wybiera wiersze
pg_send_execute -- Sends a request to execute a prepared statement with given parameters, without waiting for the result(s).
pg_send_prepare -- Sends a request to create a prepared statement with the given parameters, without waiting for completion.
pg_send_query_params -- Submits a command and separate parameters to the server without waiting for the result(s).
pg_send_query --  Wysyła zapytanie asynchroniczne
pg_set_client_encoding --  Ustawia stronę kodową klienta PostgreSQL-a
pg_set_error_verbosity --  Determines the verbosity of messages returned by pg_last_error() and pg_result_error().
pg_trace -- Uruchamia śledzenie połączeń z PostgreSQL
pg_transaction_status -- Returns the current in-transaction status of the server.
pg_tty --  Zwraca nazwę konsoli tty związanej z połączeniem
pg_unescape_bytea --  Unescape binary for bytea type
pg_untrace -- Wyłącza śledzenie połączeń PostgreSQL-a
pg_update --  Aktualizuje tabelę.
pg_version --  Returns an array with client, protocol and server version (when available)

Hosting by: Hurra Communications Sp. z o.o.
Generated: 2007-01-26 18:02:57