PostgreSQL FunktionenPostgreSQL
Wegen eines Bugs in der Behandlung von NOTICE-Benachrichtigungen
sollte das PostgreSQL-Modul der PHP Version 4.0.6 nicht
benutzt werden.
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 noch ein paar Releases danach noch
verwendet werden, aber sie werden irgendwann gelöscht. Die
CVS-Version benutzt die neuen Funktionsnamen.
Die geänderten Funktionsnamen
Die veraltete Syntax von pg_connect()/pg_pconnect wird ungültig
werden, um zukünftig asynchrone Verbindungen zu unterstützen.
Bitte benutzen Sie einen Verbindungsstring mit pg_connect() und
pg_pconnect().
PostgreSQL, ursprünglich entwickelt im UC Berkeley Computer Science
Department, hat Pionierarbeit bei objektrelationalen
Datenbankkonzepten geleistet, die jetzt Einzug in kommerzielle
Datenbanken halten. PostgreSQL bietet SQL92/SQL99
Sprachunterstützung, Transaktionen und ein erweiterbares
Typkonzept. PostgreSQL ist eine Public Domain und Open Source
Weiterentwicklung des ursprünglichen Berkeley-Codes.
PostgreSQL ist ein Open Source Produkt und kostenlos
erhältlich. 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,
einschliessllich multibyte character encoding. Die aktuelle Version
sowie weitere Informationen über PostgreSQL sind auf der Seite
www.postgresql.org erhältlich.
Um die PostgreSQL-Unterstützung nutzen zu können, müssen Sie
PHP mit "--with-pgsql[=DIR]" kompilieren. Falls das
shared object module verfügbar ist, kann das PostgreSQL Modul
mit der extension Direktive
der Datei &php.ini; geladen werden oder mittels der Funktion
dl. Die unterstützten ini Direktiven sind in
der Datei php.ini-dist beschrieben, die mit
der Distribution ausgeliefert wird.
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 ausserdem wichtig, dass Ihre libpq neuer ist, als der
PostgreSQL Server, zu dem Sie eine Verbindung aufbauen. Wenn Sie
eine libpq benutzen, die älter 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ässig
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.
Postmaster und 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
/pfad/zu/datei.php on line 20.
postmaster -i &pg_connect("host=localhost dbname=MyDbName");OK
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.
Umgebungsvariablen setzen
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 8KB 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 einzuschliessen.
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
abort oder rollback
geschlossen werden.
Large Objects benutzen
]]>
Schliessen Sie zuerst das Large Object, bevor Sie die Verbindung
schliessen.
&reference.pgsql.functions;