PostgreSQL Funktionen
PostgreSQL
&reftitle.intro;
PostgreSQL ist ein kostenloses Open Source Datenbanksystem. Es
wurde ursprünglich im UC Berkeley Computer Science
Department entwickelt und hat Pionierarbeit bei objektrelationalen
Datenbankkonzepten geleistet, die jetzt Einzug in einige
kommerzielle Datenbanken halten. PostgreSQL bietet SQL92/SQL99
Sprachunterstützung, Transaktionen, referentielle Integrität,
benutzerdefinierte Funktionen und ein erweiterbares Typkonzept.
PostgreSQL ist eine Weiterentwicklung des ursprünglichen Berkeley-Codes.
&reftitle.required;
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
8.0 haben. PostgreSQL unterstützt viele Zeichencodierungen,
einschließlich multibyte character encoding. Die aktuelle Version
sowie weitere Informationen über PostgreSQL sind auf den Seiten
&url.pgsql; erhältlich und die
ausführliche Dokumentation finden Sie unter
&url.pgsql.techdocs;.
&reference.pgsql.configure;
&reference.pgsql.ini;
Hinweise
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.
Die Namen der PostgreSQL-Funktionen wurden ab der PHP Version
4.2.0 geändert, um sie an die gültigen Coding-Standards anzupassen.
Die meisten neuen Namen enthalten zusätzliche Unterstriche, z.B.
pg_lo_open(). Einige Funktionen wurden 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.
Die geänderten Funktionsnamen
Alter Name
Neuer Name
pg_cmdtuples
pg_affected_rows
pg_errormessage
pg_last_error
pg_exec
pg_query
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_getlastoid
pg_last_oid
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
pg_numrows
pg_num_rows
pg_numfields
pg_num_fields
pg_result
pg_fetch_result
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 nicht älter 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 Sockets als auch über UNIX Domain
Sockets eine Verbindung aufzubauen.
Der Postmaster und 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
/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
PostgreSQL konvertiert alle Bezeichner automatisch in
Kleinbuschstaben (z. B. Tabellen. oder Spaltennamen). Wenn Sie
Großbuchstaben benutzen wollen. müssen Sie die Namen in
Anführungszeichen schreiben.
&reference.pgsql.constants;
&reftitle.examples;
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.
Large Objects benutzen
]]>
Schließen Sie zuerst das Large Object, bevor Sie die Verbindung zum PostgreSQL Server schließen.
&reference.pgsql.functions;