CXXV. 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: https://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 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
Postmaster | PHP | Status |
---|---|---|
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.
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.
- 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_columns -- Fetches all rows in a particular result column as an array
- 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_table -- Returns the name or oid of the tables field
- 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 -- Gets SQL NOTIFY message
- pg_get_pid -- Gets the backend's process ID
- 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 -- Pobiera informacje o tabeli
- 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)