PostgreSQLPodręcznik PHPPoprzedniNastępnyLXXXI. 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 funkcjiStara nazwaNowa nazwapg_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 PHPPostmasterPHPStatuspostmaster &pg_connect("dbname=MyDbName");OKpostmaster -i &pg_connect("dbname=MyDbName");OKpostmaster &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ówPGHOST=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ścipg_affected_rows -- Zwraca liczbę zmodyfikowanych wierszypg_cancel_query --
Przerywa zapytanie asynchroniczne
pg_client_encoding --
Zwraca stronę kodową klienta
pg_close -- Zamyka połączenie z PostgreSQLpg_connect -- Otwiera tymczasowe połączenie do PostgreSQL-apg_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 danychpg_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 arraypg_fetch_array -- Pobiera wiersz jako tablicępg_fetch_assoc -- Fetch a row as an arraypg_fetch_object -- Pobiera wiersz jako obiektpg_fetch_result -- Pobiera dane z wynikupg_fetch_row -- Pobiera wiersz jako tablicę z indeksami numerycznymipg_field_is_null -- Sprawdza czy pole zawiera NULLpg_field_name -- Zwraca nazwę kolumnypg_field_num -- Zwraza numer kolumny o podanej nazwiepg_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ęć wynikupg_get_notify -- Ping database connectionpg_get_pid -- Ping database connectionpg_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łączeniempg_last_notice --
Zwraca komunikaty informacyjne serwera PostgreSQL
pg_last_oid -- Zwraca identyfikator ostatniego obiektupg_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 plikupg_lo_import -- Importuje wielki obiekt (Large Object - LO) z plikupg_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ę kolumnpg_num_rows -- Zwraca liczbę wierszypg_options -- Podaje opcje powiązane z połączenimpg_pconnect -- Otwiera stałe połączenie do serwera PostgreSQLpg_ping -- Ping database connectionpg_port --
Zwraca numer portu związany z połączeniem
pg_put_line -- Wysyła łańcuch zakończony znakiem NULL do serwera PostgreSQLpg_query -- Wykonuje zapytanie do bazypg_result_error --
Zwraca błąd związany z identyfikatorem wyniku
pg_result_seek -- Set internal row offset in result resourcepg_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 PostgreSQLpg_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-apg_update --
Aktualizuje tabelę.
PoprzedniSpis treściNastępnyposix_unamePoczątek rozdziałupg_affected_rows
Wyszukiwarka
Podobne podstrony:
ref pgsqlref pgsqlref oracleref mathref miscref xmlref sybasepercepcja refref dbxref dbmref ingresref overloadref xmlrpcref execref aspellref oracleRef B2 Fechnerref mssqlrefwięcej podobnych podstron