Anforderungen
Um
PostgreSQL
benutzen
zu
können
,
brauchen
Sie
mindestens
eine
Version
6.5
oder
später
,
um
alle
Leistungsmerkmale
des
PostgreSQL-Moduls
nutzen
zu
können
,
müssen
Sie
eine
Version
ab
7.0
haben
.
PostgreSQL
unterstützt
viele
Zeichencodierungen
,
einschließlich
multibyte
character
encoding
.
Die
aktuelle
Version
sowie
weitere
Informationen
über
PostgreSQL
sind
auf
der
Seite
http
:
/
/www.postgresql.org
/
erhältlich
.
Hinweise
Warnung
|
Wegen
eines
Bugs
in
der
Behandlung
von
NOTICE-Benachrichtigungen
sollte
das
PostgreSQL-Modul
der
PHP
Version
4.0.6
nicht
benutzt
werden
.
Bitte
benutzen
Sie
PHP
4.1.0
oder
höher
.
|
Warnung
|
Die
Namen
der
PostgreSQL-Funktionen
werden
sich
ab
der
PHP
Version
4.2.0
ändern
,
um
sie
an
die
gültigen
Coding-Standards
anzupassen
.
Die
meisten
neuen
Namen
enthalten
zusätzliche
Unterstriche
,
z.B
.
pg_lo_open(
)
.
Einige
Funktionen
werden
der
Einheitlichkeit
wegen
umbenannt
,
z.B
.
pg_exec(
)
zu
pg_query(
)
.
Die
älteren
Namen
können
in
der
Version
4.2.0
und
auch
ein
paar
Releases
danach
noch
verwendet
werden
,
aber
sie
werden
irgendwann
gelöscht
.
Tabelle
1
.
Die
geänderten
Funktionsnamen
Die
veraltete
Syntax
von
pg_connect(
)
und
pg_pconnect(
)
wird
ungültig
werden
,
um
zukünftig
asynchrone
Verbindungen
zu
unterstützen
.
Bitte
benutzen
Sie
einen
Verbindungsstring
mit
pg_connect(
)
bzw
.
pg_pconnect(
)
.
|
Nicht
alle
Funktionen
sind
in
allen
Versionen
verfügbar
.
Es
hängt
davon
ab
,
welche
libpq
Version
(
das
PostgreSQL
C
Client
Interface
)
auf
Ihrem
Rechner
verfügbar
ist
und
wie
libpq
kompiliert
wurde
.
Falls
eine
Funktion
nicht
verfügbar
ist
,
liegt
es
daran
,
dass
libpq
die
nötigen
Routinen
nicht
unterstützt
,
die
die
Funktion
braucht
.
Es
ist
außerdem
wichtig
,
dass
Ihre
libpq
neuer
ist
,
als
der
PostgreSQL-Server
,
zu
dem
Sie
eine
Verbindung
aufbauen
.
Wenn
Sie
eine
libpq
benutzen
,
die
älter
ist
,
als
vom
PostgreSQL-Server
erwartet
,
werden
Sie
wahrscheinlich
Probleme
haben
.
Seit
Version
6.3
(
03
/
02
/
1998
)
benutzt
PostgreSQL
per
Voreinstellung
Unix
Domain
Sockets
.
Ein
TCP
/
IP
Port
wird
NICHT
standardmäßig
geöffnet
.
In
der
untenstehenden
Tabelle
werden
diese
neuen
Verbindungsmöglichkeiten
gezeigt
.
Der
Socket
ist
in
/
tmp
/
.s.PGSQL.5432
zu
finden
.
Der
Schalter
-i
,
der
dem
postmaster
mitgegeben
werden
kann
,
weist
diesen
an
,
sowohl
über
TCP
/
IP
als
auch
über
UNIX
Domain
Sockets
eine
Verbindung
aufzubauen
.
Tabelle
2
.
Der
Postmaster
und
PHP
|
|
|
|
|
|
|
|
|
|
|
Is
the
postmaster
running
and
accepting
TCP
/
IP
(
with
-i
)
connection
at
'localhost
'
on
port
'5432
'
?
in
/
pfad
/
zu
/
datei.php
on
line
20
.
|
|
|
|
Eine
Verbindung
zu
einem
PostgreSQL-Server
lässt
sich
auch
mit
den
folgenden
Wertepaaren
,
die
im
Verbindungsstring
gesetzt
werden
,
herstellen
(
wobei
mindestens
der
Name
der
Datenbank
angegeben
sein
muss)
:
$conn
=
pg_connect("host=myHost
port=myPort
tty=myTTY
options=myOptions
dbname=myDB
user=myUser
password=myPassword
")
;
Die
bisherige
Syntax
$conn
=
pg_connect
(
"host"
,
"port"
,
"options"
,
"tty"
,
"dbname"
)
ist
veraltet
und
sollte
nicht
weiter
verwendet
werden
.
Umgebungsvariablen
beeinflussen
das
Server
/
Client-Verhalten
von
PostgreSQL
.
Zum
Beispiel
sucht
das
PostgreSQL-Modul
nach
der
Umgebungsvariablen
PGHOST
,
falls
der
Hostname
im
Verbindungsstring
nicht
angegeben
wurde
.
Die
unterstützten
Umgebungsvariablen
variieren
von
Version
zu
Version
.
Schauen
Sie
für
weitere
Informationen
in
den
PostgreSQL
Programmer'
s
Guide
(nach
den
libpq
Umgebungsvariablen
)
.
Versichen
Sie
sich
,
dass
Sie
die
Umgebungsvariable
für
den
aktuellen
Benutzer
gesetzt
haben
.
Um
sich
die
Umgebungsvariablen
,
die
für
den
aktuellen
Prozess
verfügbar
sind
,
anzeigen
zu
lassen
,
benutzen
Sie
$_ENV
oder
getenv(
)
.
Beispiel
1
.
Umgebungsvariablen
setzen
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
|
|
Beispiele
Ab
der
PostgreSQL
Version
7.1.0
ist
die
maximale
Grösse
eines
Feldes
mit
dem
Datentyp
text
1GB
.
Ältere
PostgreSQL
Versionen
begrenzten
Felder
vom
Typ
text
auf
Blockgrösse
(
normalerweise
8
KB
bis
maximal
32
KB
,
falls
dies
bei
der
Kompilation
angegeben
wurde
)
.
Um
die
Large
Object-Schnittstelle
(
lo
)
zu
benutzen
,
ist
es
nötig
,
die
Large-Object-Funktionen
in
einen
Transaktionsblock
einzuschließen
.
Ein
Transaktionsblock
beginnt
mit
einem
SQL-Befehl
BEGIN
und
endet
,
falls
die
Transaktion
gültig
war
,
mit
COMMIT
oder
END
.
Wenn
die
Transaktion
fehlschlägt
,
sollte
sie
mit
ROLLBACK
oder
ABORT
geschlossen
werden
.
Beispiel
2
.
Large
Objects
benutzen
?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
,
"Daten
des
Large
Objects")
;
pg_lo_close
($handle)
;
pg_query
($database
,
"commit")
;
?
|
|
Schließen Sie zuerst das Large Object, bevor Sie die
Verbindung zum PostgreSQL Server schließen.