LXXXI . 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 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 nazwa Nowa nazwa

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 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



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 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 )




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_fetch_all -- Fetch a row as an array
pg_fetch_array -- Pobiera wiersz jako tablicę
pg_fetch_assoc -- Fetch a row as an 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 -- 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_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_put_line -- Wysyła łańcuch zakończony znakiem NULL do serwera PostgreSQL
pg_query -- Wykonuje zapytanie do bazy
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_query -- Wysyła zapytanie asynchroniczne
pg_set_client_encoding -- Ustawia stronę kodową klienta PostgreSQL-a
pg_trace -- Uruchamia śledzenie połączeń z PostgreSQL
pg_tty -- Zwraca nazwę konsoli tty związanej z połączeniem
pg_unescape_bytea -- Escape binary for bytea type
pg_untrace -- Wyłącza śledzenie połączeń PostgreSQL-a
pg_update -- Aktualizuje tabelę.